Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Join-Abfrage für mehrere Tags (Viele-zu-Viele-Beziehung), die mit ALLEN Tags übereinstimmt?

Verwendung:

  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

Ihnen fehlte die HAVING-Klausel.

Es ist kein LEFT JOIN erforderlich, wenn Sie nur Zeilen wollen, in denen beide Tags vorhanden sind.