SQL通过3个不同的表联接

时间:2019-03-13 14:29:01

标签: sql sql-server vb.net tsql

伙计们,我有一条我非常努力的SQL语句。我基本上是试图在vb.net中创建一个媒体播放器,并按如下所示设置表结构-

SONGS_DB- Song_ID,Song_Name

SONG_PLAYLIST Song_playlist_id,Song_id,Playlist_ID

播放列表 播放列表ID,播放列表名称

我面临的问题是在特定播放列表中显示所有歌曲,因为这需要遵循3个表之间的链条。我目前有一个显示所有播放列表名称的组合框,当更改组合框中的所选索引时,我希望我的datagridviewer显示所选播放列表名称中的所有歌曲名称。

这基本上是我拥有的所有代码,因为我什至不知道从哪里开始-

 Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    Dim con As New SqlConnection With {.ConnectionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\coolj\OneDrive\Documents\Loop\Loop\Songs_SQL.mdf;Integrated Security=True"}
    Dim cmd As New SqlCommand("SELECT SONG_ID, SONG_NAME FROM SONGS_DB WHERE SONG_ID IN (SELECT SONG_ID FROM SONG_PLAYLIST WHERE PLAYLIST_ID IN (SELECT PLAYLIST_ID FROM Playlist WHERE PLAYLIST_NAME = (@NAME)", con)
    cmd.Parameters.AddWithValue("@NAME", ComboBox1.SelectedIndex)

End Sub

所有帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

在SQL中,您可以将表与子句JOIN连接。这是您需要的:

SELECT S.Song_Name, P.Playlist_Name
FROM SONGS_DB AS S
JOIN SONG_PLAYLIST AS SP
    ON S.Song_ID = SP.Song_ID
JOIN PLAYLIST AS P
    ON P.Playlist_ID = SP.Playlist_ID