mysql: Suche nach Zeilen mit mehreren Tags und derselben ID
Ich habe ein Problem damit, dass mysql Links findet, die zwei spezifische 'Tags' und den gleichen 'Hash' haben, wenn JOIN von zwei Tabellen ausgeführt wird
Angenommen, meine Tabellen sehen folgendermaßen aus:
Links
md5 url title numberofsaves
-----------------------------------------
a0a0 google.com foo 200
b1b1 yahoo.com yahoo 100
Stichworte
md5 tag
---------------
a0a0 awesome
a0a0 useful
a0a0 cool
b1b1 useful
b1b1 boring
Ich möchte Zeilen mit den Tags "nützlich" und "fantastisch" zurückgeben.
Die aktuelle (funktionierende / schnelle) Abfrage zum Suchen von Links nach 1 Tag:
SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 WHERE tags.tag = 'useful' ORDER BY links.numberofsaves DESC LIMIT 20
Nach dem Lesen einesArtikel Ich habe versucht, Folgendes zu verwenden:
SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 GROUP BY tags.md5 HAVING SUM(tags.tag='useful') AND SUM(tags.tag='awesome') ORDER BY links.numberofsaves DESC LIMIT 20
Diesetut arbeiten, aber es ist so unglaublich langsam, dass es unbrauchbar wird.
Kennt jemand die Lösung?