我是SQL的初学者,我对在请求中组合表有疑问。
我得到了这三个表:
表1:歌曲
列:id,标题
表2:song_artists
列:id,song_id,artist_id
表3:艺术家
列:ID,名称
作为示例,当插入来自David Guetta壮举的歌曲Memories时。 Kid Cudi进入数据库,看起来可能像这样:
表1:
id=1, title="Memories"
表2:
id=1, song_id=1, artist_id=1
id=2, song_id=1, artist_id=2
表3:
id=1, name="David Guetta"
id=2, name="Kid Cudi"
现在,我想获取所有歌曲的列表以及它们的标题和艺术家,但是我不知道如何在一个sql语句中组合这3个表。
答案 0 :(得分:1)
为了检索表中的数据,您必须使用JOIN
,它可以表示为:
SELECT title, name
FROM table1, table2, table3
WHERE table1.id = table2.song_id AND table3.id = table2.artist_id
ORDER BY title
或者,您可以使用INNER JOIN
,这基本上是相同的。如果是这样,如果我没记错,它将是这样的:
SELECT table1.title, table1.name
FROM table1
INNER JOIN table2 ON table1.id = table2 .song_id
INNER JOIN table3 ON table3.id = table2.artist_id
ORDER BY table1.title
答案 1 :(得分:1)
使用joins,这是根据行的等效关系组合行的一种方式:
SELECT title, song_id, artist_id, name FROM Table_1, Table_2, Table_3
INNER JOIN Table_2 ON Table_1.id=Table_2.id
INNER JOIN Table_3 ON Table_2.id=Table_3.id