Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL JOIN много към много

Възможно е с този малък трик (OUTER JOIN в таблицата много към много, с ограничението, че GroupID трябва да бъде 3 (за драма)

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 означава:вземете всички редове от предходните таблици (тези, които са от ЛЯВАТА страна на LEFT OUTER JOIN , ако желаете), дори ако няма редове, съответстващи на тях в следващите таблици. Условието ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 казва, че ако намерим нещо, което съответства на нашия ElementID, то също трябва да е драма (GroupID =3). След това правим още едно LEFT OUTER JOIN в таблицата на групите, което ни позволява да покажем колоната Жанр или NULL, ако елементът не е драма.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Дизайн на база данни за приложения, използващи хештагове

  2. MySQL СЪЗДАВАНЕ НА ТАБЛИЦА АКО НЕ СЪЩЕСТВУВА -> Грешка 1050

  3. Изтеглете csv от codeigniter mysql

  4. Защо django ORM е толкова по-бавен от суровия SQL

  5. Може ли външен ключ да препраща към неуникален индекс?