三向内部联接,带有附加表

时间:2019-06-29 21:53:06

标签: mysql inner-join

我有一个包含以下表格的音乐数据库:

艺术家(ID,ArtistName)
专辑(ID,ArtistID,专辑名称)
表演者(ID,ArtistID,PerformerName)
AlbumPerformers(ID,AlbumID,歌手,吉他,贝斯,鼓)

这是我正在学习MySQL时的一种实践模式,因此我可能没有在设置它方面做得最好,但是我想拥有尽可能多的表以便为我提供更多选择。

我想提出一个内部联接查询,它将为我提供乐队中每个位置的艺术家,专辑和名字。

以下内容为我提供了这一点,但将PerformerID代替了Performer名称:

    SELECT artists.Artist, albums.AlbumName, albumperformers.singer
    FROM artists
    INNER JOIN albums ON artists.artist_id=albums.artist_id
    INNER JOIN albumperformers ON albumperformers.album_id=albums.album_id;

我该如何构造它,以便给我表演者名称而不是ID?

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要执行其他JOIN来解决歌手,贝斯,吉他和鼓领域,这似乎是 Performers.ID 的FK。

我已经测试了以下表模式:

at

以下语句:

at

产生所需的结果:

boxplot(Value~Type+Level, yaxt="n", data=Mydata2)
tickmarks = c(min(Mydata2$Value), max(Mydata2$Value))
axis(2, at = round(tickmarks,1))