加入多个表格并显示从ID

时间:2017-10-09 03:37:31

标签: sql phpmyadmin foreign-keys jointable

我使用我学到的正常形式重建了我的数据库,但是现在我有问题将它们连接成一个包含所有表格的数据。

我有一个歌曲数据库,表格的连接是这样链接的:

songs          artists            song_vocals         song_composers
--------------------------------------------------------------------
song_id        artist_id          song_id             song_id
title          artist_name        artist_id           artist_id

有多个表,其外键指向艺术家表。

我想用这样的名字显示所有信息,我不希望用id显示它们:

song_id        title         vocal          composer
--------------------------------------------------------
1              ABC           John           Cat

到目前为止,我能做的最好的就是加入3张桌子,只给我 song_id title vocal

SELECT songs.song_id, songs.title, artists.artist_name as vocal FROM songs
LEFT JOIN song_vocals ON
song_vocals.song_id = songs.song_id
left join artists ON
song_vocals.artist_id = artists.artist_id

我如何加入更多?

3 个答案:

答案 0 :(得分:0)

如果你没有这样做,你可以为作曲家创建一个表,并在你的song_vocals表中添加一个外键,无论如何你的语句都是你的主表。然后你可以在艺术家之后添加另一个左连接到作曲家表,虽然不要忘记在你的select语句中放入composers.composer_name(我假设)。

答案 1 :(得分:0)

表song_vocals和song_composer

之间有什么区别

答案 2 :(得分:0)

SELECT 
songs.title as SongTitle,
a1.artist_name as Vocal,
a2.artist_name as Composer
FROM songs
left join song_vocals ON song_vocals.song_id = songs.song_id
left join artists a1 ON song_vocals.artist_id = a1.artist_id
left join song_composers on songs.song_id = song_composers.song_id
left join artists a2  on a2.artist_id = song_composers.artist_id

这是您应该使用的代码块。 如果您有两个或多个指向表的链接,则在使用ALIAS时可以多次使用该表。 在你的前。 " A1"" A2"是你的ALIAS