rubbeldekatz
05.05.2009, 12:18:04
Ich habe jetzt 2 Stunden gegoogelt und keine Lösung gefunden.
Ich habe eine Tabelle mit Stichworten, die 1:n mit einer Haupttabelle verknüpft ist.
Wenn ich mehrere Stichworte suchen will, dann mache ich das so:
SELECT ta.* FROM ta LEFT JOIN tb ON ta.id=tb.id_a
WHERE tb.stichwort = 'geschichte' OR tb.stichwort = 'politik'
GROUP BY ta.id
Gefunden werden alle Datensätze mit geschichte ODER politik.
Wenn ich nun Datensätze suchen will, die geschichte UND politik als Stichwort haben dann funktioniert das nicht, wenn ich das OR durch ein AND austausche.
Eine Lösung ist das mehrfache Verknüpfen der Stichworttabelle.
SELECT a.* FROM ta AS a
LEFT JOIN tb ON a.id=b.id_a AS b
LEFT JOIN tb ON a.id=c.id_a AS c
WHERE b.stichwort = 'geschichte' AND c.stichwort = 'politik'
GROUP BY a.id
Es muss aber eine einfachere Lösung geben.
Bitte an die Profis... Lasst ich nicht hängen ;)
RubbeDeKatz
Ich habe eine Tabelle mit Stichworten, die 1:n mit einer Haupttabelle verknüpft ist.
Wenn ich mehrere Stichworte suchen will, dann mache ich das so:
SELECT ta.* FROM ta LEFT JOIN tb ON ta.id=tb.id_a
WHERE tb.stichwort = 'geschichte' OR tb.stichwort = 'politik'
GROUP BY ta.id
Gefunden werden alle Datensätze mit geschichte ODER politik.
Wenn ich nun Datensätze suchen will, die geschichte UND politik als Stichwort haben dann funktioniert das nicht, wenn ich das OR durch ein AND austausche.
Eine Lösung ist das mehrfache Verknüpfen der Stichworttabelle.
SELECT a.* FROM ta AS a
LEFT JOIN tb ON a.id=b.id_a AS b
LEFT JOIN tb ON a.id=c.id_a AS c
WHERE b.stichwort = 'geschichte' AND c.stichwort = 'politik'
GROUP BY a.id
Es muss aber eine einfachere Lösung geben.
Bitte an die Profis... Lasst ich nicht hängen ;)
RubbeDeKatz