sql >> Databasteknik >  >> RDS >> Mysql

SQL JOIN många-till-många

Det är möjligt med det här lilla tricket (OUTTER JOIN på många-till-många-bordet, med begränsningen att GroupID måste vara 3 (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 betyder:ta alla rader från tabellerna som föregick (de som finns på VÄNSTER sida av LEFT OUTER JOIN , om du vill), även om det inte finns några rader som motsvarar dem i följande tabeller. Villkoret ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 säger att om vi hittar något som matchar vårt ElementID måste det också vara ett drama (GroupID =3). Vi gör sedan ytterligare en LEFT OUTER JOIN på grupptabellen, vilket gör att vi kan visa genrekolumnen, eller NULL om elementet inte var ett drama.




  1. MySQL:finns inte i GROUP BY

  2. Använd mysql-fråga på varje tabell i en databas

  3. Mätning av faktisk MySQL-frågetid

  4. Golang, mysql:Fel 1040:För många anslutningar