T
t_soul
Mitglied
Thread Starter
- Dabei seit
- 11.06.2005
- Beiträge
- 20
- Reaktionspunkte
- 0
Hallo,
als mySQL-newbie stehe ich auf dem Schlauch:
Gegeben sind mehrere Tabellen, in denen ich einen Begriff suche:
Haupttabelle ist A, Untertabellen sind B, C, ... M.
Schlüssel (die ID der Haupttabelle) 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 allg. Syntax füe diese Abfrage?
Die Datensätze aus A sollen natürlich nur eimal erscheinen.
Der Suchbegriff kann irgendwo stehen, d.h. er muß nicht selbst in A vorkommen.
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...
Oder muß ich die inv in einer neuen Tabelle zwischenspeichern?
Herzlichen Dank für DEN weiterhelfenden Tip!
Till
als mySQL-newbie stehe ich auf dem Schlauch:
Gegeben sind mehrere Tabellen, in denen ich einen Begriff suche:
Haupttabelle ist A, Untertabellen sind B, C, ... M.
Schlüssel (die ID der Haupttabelle) 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 allg. Syntax füe diese Abfrage?
Die Datensätze aus A sollen natürlich nur eimal erscheinen.
Der Suchbegriff kann irgendwo stehen, d.h. er muß nicht selbst in A vorkommen.
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...
Oder muß ich die inv in einer neuen Tabelle zwischenspeichern?
Herzlichen Dank für DEN weiterhelfenden Tip!
Till