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

SQL JOIN molti-a-molti

È possibile con questo piccolo trucco (OUTER JOIN sulla tabella molti-a-molti, con il vincolo che il GroupID deve essere 3 (per 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 significa :prendi tutte le righe dalle tabelle che hanno preceduto (quelle che si trovano sul lato SINISTRO del LEFT OUTER JOIN , se vuoi), anche se non ci sono righe corrispondenti nelle tabelle seguenti. La condizione ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 dice che se troviamo qualcosa che corrisponde al nostro ElementID, deve anche essere un dramma (GroupID =3). Quindi eseguiamo un altro LEFT OUTER JOIN sulla tabella dei gruppi, che ci consente di visualizzare la colonna Genere o NULL se l'elemento non era un dramma.