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

SQL JOIN mange-til-mange

Det er muligt med dette lille trick (YDRE JOIN på mange-til-mange-bordet, med den begrænsning, at gruppe-ID'et skal være 3 (til 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 :tag alle linjerne fra tabellerne der gik forud (dem der er på VENSTRE side af LEFT OUTER JOIN , hvis du vil), selvom der ikke er nogen linjer, der svarer til dem i de følgende tabeller. Betingelsen ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 siger, at hvis vi finder noget, der matcher vores ElementID, skal det også være et drama (GroupID =3). Vi laver derefter endnu en LEFT OUTER JOIN på gruppetabellen, som gør det muligt for os at vise Genre-kolonnen eller NULL, hvis elementet ikke var et drama.




  1. MySQL:#126 - Forkert nøglefil til tabel

  2. Hvordan grupperes tidsstempler i øer (baseret på vilkårlig hul)?

  3. hvordan man trimmer indledende nuller fra alfanumerisk tekst i mysql-funktionen

  4. Komplet proces til at kopiere tabel fra en database til en anden (eksport-import) i SQL Server