mysql: búsqueda de filas que tienen varias etiquetas y la misma ID
Tengo un problema al calcular el mysql para encontrar enlaces que tengan dos 'etiquetas' específicas y el mismo 'hashid' al hacer una ÚNICA de dos tablas
Supongamos que mis tablas se ven así:
Campo de golf
md5 url title numberofsaves
-----------------------------------------
a0a0 google.com foo 200
b1b1 yahoo.com yahoo 100
Etiquetas
md5 tag
---------------
a0a0 awesome
a0a0 useful
a0a0 cool
b1b1 useful
b1b1 boring
Quiero devolver las filas que tienen etiquetas de AMBOS 'útiles' e 'impresionantes'
La consulta actual (en funcionamiento / rápida) para encontrar enlaces por 1 etiqueta:
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
Después de leer unartículo Intenté usar lo siguiente:
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
Estahace funciona pero es increíblemente lento para ser inutilizable.
Alguien sabe la solución?