1

我有两张桌子

ID艺术家姓名
------------ ------------
1个
2 50 美分

IDsong name IDartist IDauthor IDcomposer IDmusicProducer
------ ---- -------- -------- --------- ---------------
1 朗利 1 2 1 2

我怎么知道 IDartist、IDauthor、IDcomposer、IDmusicProducer 的名字?

我试图这样做但它不起作用:

选择
歌曲。`IDsong`,
歌曲。`IDartist`,
歌曲。`名称`,
歌曲。`IDgenre`,
歌曲。`IDauthor`,
歌曲。`IDcomposer`,
歌曲。`IDmusicProducer`,
艺术家。`名称`作为艺术家名称,
歌曲流派。`名称`作为流派名称
来自“歌曲”
LEFT OUTER JOIN `artists` ON (songs.`IDartist` = 艺术家。`IDartist` OR 歌曲。`IDauthor` = 艺术家。`IDartist` OR 歌曲。`IDcomposer` = 艺术家。`IDartist` OR 歌曲。`IDmusicProducer` =艺术家。`IDartist`)
LEFT OUTER JOIN `songs_genres` ON (songs.`IDgenre` = song_genres.`IDgenre`)
WHERE 歌曲。`IDsong`=XXX
4

1 回答 1

2

为了获得艺术家、作者、作曲家和制作人的姓名,您必须将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在表格上使用。

于 2013-11-07T15:35:27.127 回答