簡體   English   中英

SQL左聯接有4列

[英]SQL left JOIN with 4 columns

我有兩張桌子

IDartist     name
----------- -----------
1           akon
2           50 cent

IDsong    name   IDartist   IDauthor   IDcomposer   IDmusicProducer
------    ----   --------   --------   ---------    ---------------
1         lonley    1         2           1              2

我如何確定IDartist,IDauthor,IDcomposer,IDmusicProducer的名字?

我試圖這樣做,但無法正常工作:

SELECT
songs.`IDsong`,
songs.`IDartist`,
songs.`name`,
songs.`IDgenre`,
songs.`IDauthor`,
songs.`IDcomposer`,
songs.`IDmusicProducer`,
artists.`name` As artists_name,
songs_genres.`name` As genres_name
FROM `songs`
LEFT OUTER JOIN `artists` ON (songs.`IDartist` = artists.`IDartist` OR songs.`IDauthor` = artists.`IDartist` OR songs.`IDcomposer` = artists.`IDartist` OR songs.`IDmusicProducer` = artists.`IDartist`)
LEFT OUTER JOIN `songs_genres` ON (songs.`IDgenre` = songs_genres.`IDgenre`)
WHERE songs.`IDsong`=XXX

為了獲得藝術家,作家,作曲家,和制片人的名字,你將不得不加入artists表的songs表單獨倍。 該查詢應類似於以下內容:

SELECT
s.IDsong, s.name,
a1.name AS artists_name,
a2.name AS author_name,
a3.name AS composer_name,
a4.name AS producer_name,
sg.name AS genres_name
FROM songs AS s
  JOIN artists AS a1 ON s.IDartist = a1.IDartist
  JOIN artists AS a2 ON s.IDauthor = a2.IDartist
  JOIN artists AS a3 ON s.IDcomposer = a3.IDartist
  JOIN artists AS a4 ON s.IDmusicProducer = a4.IDartist
  JOIN songs_genres AS sg ON s.IDgenre = sg.IDgenre

如果可能沒有藝術家,作家,作曲家和制作人來做唱片,那么您將不得不在表上使用LEFT JOIN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM