SQL sql join frage

Hi,

ich habe folgende Ausgangssituation.

2 Tabellen über eine LinkTabelle (n:n) verknüpft.

Seite -> SeiteTagsLink <- Tags

Ich möchte einen Query bauen der mir ALLE Seiten zurück gibt die ALLE Tags aus einer Liste enthalten

Code:
SELECT * FROM Seite
LEFT JOIN SeiteTagsLink ON Seite.id = SeiteTagsLink.seite_id
WHERE
SeiteTagsLink.tag_id = 5
AND
SeiteTagsLink.tag_id = 6

Sollte mir alle Seiten zurückgeben die die Tags mit der ID 5 und 6 haben.
Es gibt auf jedenfall seiten die sowohl Tag 5 als auch Tag 6 gesetzt haben.
Trotz bekomme ich immer 0 Results.
Wenn ich nur einen Tag prüfe funktioniert der Query.

Leider steh ich ihr etwas an, ich bin für jeden TIpp dankbar.
 
Zuletzt bearbeitet:
das problem liegt in dem AND ...

deine resultat tabele sieht irgendwie so aus:

blah | blah | blah | 5
blah | blah | blah | 6

wobei die letzte spalte deine Tag_id ist ...

dein query sucht nach zeilen, in denen diese spalte GLEICHZEITIG 5 und 6 ist ...

eine lösung dafür wäre:

mache aus dem AND ein OR und gruppiere nach der seite ... füge eine weitere bedinung ein die count(tag_id) = [anzahl der gesuchten tags] prüft ... ggf. muss für das count noch eine distinct einschränkung aufgestellt werden
 
danke !

Code:
SELECT s.id, s.title
FROM seite s
LEFT JOIN seite_tag_link st ON s.id = st.seite_id
WHERE st.tag_id = 2
  OR st.tag_id = 4
GROUP BY s.id
HAVING count(st.tag_id) = 2

war dann die lösung :)
 
Zurück
Oben