Hi,
ich hab mal wieder ein kleines Problem.
Ich beschreib erstmal die Tabellen, um dann auf das Problem einzugehen.
Ich habe 3 Tabellen:
1. Tabelle Daten:
datenID
datum
und weitere einträge die man finden möchte
2. Tabelle zwischenTabelle Daten_Tags
datenID
tagID
3. Tabelle Tags
tagID
tag
Ich möchte gerne jetzt alle Daten haben, die 2 Suchtags beinhalten. Also wenn man nach "Haus" und "Hof" sucht, dass nur die Daten zurück kommen die den tag "Haus" UND "Hof" haben.
Meine jetztige Lösung ist nicht gerade schön:
Diese Abfrage braucht sehr lang, wenn sehr wenig gefunden wird.
Ich hoffe ich habe irgendwas übersehen.
Danke schonmal.
Gruß
dki
ich hab mal wieder ein kleines Problem.
Ich beschreib erstmal die Tabellen, um dann auf das Problem einzugehen.
Ich habe 3 Tabellen:
1. Tabelle Daten:
datenID
datum
und weitere einträge die man finden möchte
2. Tabelle zwischenTabelle Daten_Tags
datenID
tagID
3. Tabelle Tags
tagID
tag
Ich möchte gerne jetzt alle Daten haben, die 2 Suchtags beinhalten. Also wenn man nach "Haus" und "Hof" sucht, dass nur die Daten zurück kommen die den tag "Haus" UND "Hof" haben.
Meine jetztige Lösung ist nicht gerade schön:
Code:
SELECT * FROM DATEN WHERE datenID IN (SELECT datenID WHERE Daten_Tags dt JOIN Tags t ON dt.tagID=t.tagID WHERE tag='Haus') AND datenID IN (SELECT datenID WHERE Daten_Tags dt JOIN Tags t ON dt.tagID=t.tagID WHERE tag='Hof') ORDER BY datum ASC LIMIT 16 OFFSET 0
Diese Abfrage braucht sehr lang, wenn sehr wenig gefunden wird.
Ich hoffe ich habe irgendwas übersehen.
Danke schonmal.
Gruß
dki