Mysql
 sql >> Database >  >> RDS >> Mysql

Query di unione a Mysql per più tag (relazione molti-a-molti) che corrisponde a TUTTI i tag?

Usa:

  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

Ti mancava la clausola HAVING.

Non c'è bisogno di LEFT JOIN se vuoi solo righe in cui esistono entrambi i tag.