sql >> Databáze >  >> RDS >> Mysql

SQL PŘIPOJTE SE mnoho k mnoha

Je to možné pomocí tohoto malého triku (OUTER JOIN na stole many-to-many, s omezením, že GroupID musí být 3 (pro 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 znamená :vzít všechny řádky z tabulek, které předcházely (ty, které jsou na LEVÉ straně LEFT OUTER JOIN , chcete-li), i když jim v následujících tabulkách neodpovídají žádné řádky. Podmínka ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 říká, že pokud najdeme něco, co odpovídá našemu ElementID, musí to být také drama (GroupID =3). Poté provedeme další LEFT OUTER JOIN v tabulce skupin, což nám umožní zobrazit sloupec Genre nebo NULL, pokud prvek nebyl drama.




  1. Rychlejší způsob, jak odstranit odpovídající řádky?

  2. Python mySQL - únikové uvozovky

  3. Jak využít WebDev.WebServer.exe (VS Web Server) v x64?

  4. Jak se připojit ke třem stolům v Codeigniter