sql >> Base de Datos >  >> RDS >> Mysql

¿Consulta de unión de Mysql para múltiples etiquetas (relación de muchos a muchos) que coincide con TODAS las etiquetas?

Usar:

  SELECT * 
    FROM OBJECTS o
    JOIN OBJECTSTAGS ot ON ot.object_id = o.id
    JOIN TAGS t ON t.id = ot.tag_id
   WHERE t.name IN ('tag1','tag2')
GROUP BY o.id
  HAVING COUNT(DISTINCT t.name) = 2

Te faltaba la cláusula HAVING.

No es necesario LEFT JOIN si solo desea filas donde existan ambas etiquetas.