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

SQL JOIN viele-zu-viele

Dies ist mit diesem kleinen Trick möglich (OUTER JOIN auf der Many-to-Many-Tabelle, mit der Einschränkung, dass die GroupID 3 sein muss (für Drama)

http://sqlfiddle.com/#!9/01cf3/1

SELECT elements.ID, elements.Element, groups.Genre
  FROM elements
LEFT OUTER JOIN group_elements
  ON elements.ID = group_elements.ElementID
 AND group_elements.GroupID = 3
LEFT OUTER JOIN groups
  ON group_elements.GroupID = groups.ID

LEFT OUTER JOIN bedeutet:Nimm alle Zeilen aus den vorangegangenen Tabellen (diejenigen, die sich auf der linken Seite des LEFT OUTER JOIN befinden , wenn Sie so wollen), auch wenn es in den folgenden Tabellen keine entsprechenden Zeilen gibt. Die Bedingung ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 sagt, dass, wenn wir etwas finden, das zu unserer ElementID passt, es auch ein Drama sein muss (GroupID =3). Wir führen dann einen weiteren LEFT OUTER JOIN in der Gruppentabelle durch, wodurch wir die Genre-Spalte anzeigen können, oder NULL, wenn das Element kein Drama war.