Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête de jointure Mysql pour plusieurs balises (relation plusieurs à plusieurs) qui correspond à TOUTES les balises ?

Utiliser :

  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

Il vous manquait la clause HAVING.

Il n'est pas nécessaire de LEFT JOIN si vous ne voulez que des lignes où les deux balises existent.