Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL JOIN wiele do wielu

Jest to możliwe dzięki tej małej sztuczce (OUTER JOIN w tabeli wiele do wielu, z ograniczeniem, że GroupID musi wynosić 3 (dla dramatu)

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 oznacza :weź wszystkie wiersze z poprzedzających tabel (te, które znajdują się po LEWEJ stronie LEFT OUTER JOIN , jeśli chcesz), nawet jeśli w poniższych tabelach nie ma odpowiadających im wierszy. Warunek ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 mówi, że jeśli znajdziemy coś, co pasuje do naszego ElementID, musi to być również dramat (GroupID =3). Następnie wykonujemy kolejne LEFT OUTER JOIN w tabeli groups, co pozwala nam wyświetlić kolumnę Gatunek lub NULL, jeśli element nie był dramatem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak automatycznie załadować MySQL podczas uruchamiania systemu OS X Yosemite / El Capitan?

  2. ini_set, set_time_limit, (max_execution_time) - nie działa

  3. Czy mysql_insert_id jest bezpieczny w użyciu?

  4. Informacje o bazie danych information_schema w MySQL

  5. #1071 — Określony klucz był za długi; maksymalna długość klucza to 1000 bajtów