Hallo,
als mySQL-newbie stehe ich auf dem Schlauch:
Gegeben sind mehrere Tabellen, die ich gleichzeitig abfragen
muß:
Haupttabelle ist A, Untertabellen sind B, C, ... M. Schlüssel ist
jeweils "inv". Von der Haupttabelle ausgehend m:n-Beziehungen.
Nun suche ich alle DS in A, welche
- in A in verschiedenen Feldern einen Suchbegriff enthalten
können (LIKE 'sonstwas'),
oder
- in einem Feld von B 'sonstwas' stehen haben
oder
- in einem Feld von C 'sonstwas' stehen haben
oder
- in einem Feld von D 'sonstwas' stehen haben
oder
- in einem Feld von E 'sonstwas' stehen haben
oder ...
...gähn
Wie bitte ist die Syntax füe diese Abfrage?
Die DS aus A sollen natürlich nur eimal erscheinen.
Es kann auch vorkommen, daß in den Feldern von A kein Treffer
erziehlt wird, wohl aber in einer oder mehreren Untertabellen.
Folgende Syntax zumindest - bitte nicht schlagen - zwingt den
Server in die Knie:
"SELECT Ob.inv, Ob.Bereich, Ob.Sammlung, Ob.Objekt, Ob.Titel,
Ob.Bild1
FROM (mOBJEKT Ob, mAltNamen aN, mMaterial Ma,
mVerwendung Vw, mHersteller Hst)
WHERE (Ob.inv like '%sonstwas%' OR
Ob.Bereich like '%sonstwas%' OR
Ob.Sammlung like '%sonstwas%' OR
Ob.Objekt like '%sonstwas%' OR
Ob.Titel like '%sonstwas%' OR
Ob.Internet like '%sonstwas%' OR
aN.AltNamen like '%sonstwas%' AND aN.inv = Ob.inv OR
Ma.Material like '%sonstwas%' AND Ma.inv = Ob.inv OR
Vw.Verwendung like '%sonstwas%' AND Vw.inv = Ob.inv OR
Hst.Hersteller like '%sonstwas%' AND Hst.inv = Ob.inv )
GROUP BY 'Ob.inv'
ORDER BY 'Ob.inv'
ASC LIMIT 25;"
Es können noch mehr Tabellen hinzukommen...
Ich vermute, daß ich dies mit JOIN o.ä. lösen muß, allein der
Ansatz fehlt mir...
Herzlichen Dank für DEN weiterhelfenden Tip!
Till
als mySQL-newbie stehe ich auf dem Schlauch:
Gegeben sind mehrere Tabellen, die ich gleichzeitig abfragen
muß:
Haupttabelle ist A, Untertabellen sind B, C, ... M. Schlüssel ist
jeweils "inv". Von der Haupttabelle ausgehend m:n-Beziehungen.
Nun suche ich alle DS in A, welche
- in A in verschiedenen Feldern einen Suchbegriff enthalten
können (LIKE 'sonstwas'),
oder
- in einem Feld von B 'sonstwas' stehen haben
oder
- in einem Feld von C 'sonstwas' stehen haben
oder
- in einem Feld von D 'sonstwas' stehen haben
oder
- in einem Feld von E 'sonstwas' stehen haben
oder ...
...gähn
Wie bitte ist die Syntax füe diese Abfrage?
Die DS aus A sollen natürlich nur eimal erscheinen.
Es kann auch vorkommen, daß in den Feldern von A kein Treffer
erziehlt wird, wohl aber in einer oder mehreren Untertabellen.
Folgende Syntax zumindest - bitte nicht schlagen - zwingt den
Server in die Knie:
"SELECT Ob.inv, Ob.Bereich, Ob.Sammlung, Ob.Objekt, Ob.Titel,
Ob.Bild1
FROM (mOBJEKT Ob, mAltNamen aN, mMaterial Ma,
mVerwendung Vw, mHersteller Hst)
WHERE (Ob.inv like '%sonstwas%' OR
Ob.Bereich like '%sonstwas%' OR
Ob.Sammlung like '%sonstwas%' OR
Ob.Objekt like '%sonstwas%' OR
Ob.Titel like '%sonstwas%' OR
Ob.Internet like '%sonstwas%' OR
aN.AltNamen like '%sonstwas%' AND aN.inv = Ob.inv OR
Ma.Material like '%sonstwas%' AND Ma.inv = Ob.inv OR
Vw.Verwendung like '%sonstwas%' AND Vw.inv = Ob.inv OR
Hst.Hersteller like '%sonstwas%' AND Hst.inv = Ob.inv )
GROUP BY 'Ob.inv'
ORDER BY 'Ob.inv'
ASC LIMIT 25;"
Es können noch mehr Tabellen hinzukommen...
Ich vermute, daß ich dies mit JOIN o.ä. lösen muß, allein der
Ansatz fehlt mir...
Herzlichen Dank für DEN weiterhelfenden Tip!
Till