mysql: encontrando linhas que possuem várias tags e o mesmo id
Eu estou tendo um problema de descobrir o mysql para encontrar links que têm duas 'tags' específicas e o mesmo 'hashid' ao fazer um JOIN de duas tabelas
Suponha que minhas tabelas sejam assim:
Links
md5 url title numberofsaves
-----------------------------------------
a0a0 google.com foo 200
b1b1 yahoo.com yahoo 100
Tag
md5 tag
---------------
a0a0 awesome
a0a0 useful
a0a0 cool
b1b1 useful
b1b1 boring
Quero retornar linhas com tags de "útil" e "incrível"
A consulta atual (trabalhando / rápida) para encontrar links por 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
Depois de ler umartigo Eu tentei usar o seguinte:
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
estefaz trabalho, mas é tão inacreditavelmente lento a ponto de ficar inutilizável.
Alguém sabe a solução?