我有两张桌子
IDartist名称
----------- -----------
1阿肯
2 50美分
IDsong名称IDartist IDauthor IDcomposer IDmusicProducer
------ ---- -------- -------- --------- ---------------
1朗利1 2 1 2
我怎么知道作者,作者,作曲家,制作人的名字?
我试着这么做,但没有成功:
选择
歌曲。`IDsong`,
歌曲。`IDartist`,
歌曲。`name`,
歌曲。`IDgenre`,
歌曲。`IDauthor`,
歌曲。`IDcomposer`,
歌曲。`IDmusicProducer`,
艺术家。`name`作为艺术家,
歌曲流派。“名称”为流派名称
来自“歌曲”`
左外连接“艺术家”打开(歌曲。`IDartist`=艺术家。`IDartist`或歌曲。`IDauthor`=艺术家。`IDartist`或歌曲。`IDcomposer`=艺术家。`IDartist`或歌曲。`IDmusicProducer`=艺术家。`IDartist`)
左外连接“songs\u genres”打开(songs.`IDgenre`=songs\u genres.`IDgenre`)
哪里有歌。`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

关于mysql - SQL左联接有4列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19839754/

10-16 01:48