SQL:在一个请求中从多个表中获取信息

时间:2019-03-09 08:42:45

标签: mysql sql

我是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个表。

2 个答案:

答案 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