sql >> Base de Datos >  >> RDS >> Mysql

SQL JOIN muchos a muchos

Es posible con este pequeño truco (OUTER JOIN en la tabla de muchos a muchos, con la restricción de que GroupID debe ser 3 (para 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:tomar todas las líneas de las tablas anteriores (las que están en el lado IZQUIERDO del LEFT OUTER JOIN , si lo desea), incluso si no hay líneas correspondientes a ellos en las siguientes tablas. La condición ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 dice que si encontramos algo que coincida con nuestro ElementID, también debe ser un drama (GroupID =3). Luego hacemos otro LEFT OUTER JOIN en la tabla de grupos, lo que nos permite mostrar la columna Género o NULL si el elemento no era un drama.