SQL通过3个不同的表加入

问题描述 投票:2回答:1

嘿伙计们,我有一个SQL语句,我真的很挣扎。我基本上试图在vb.net中创建一个媒体播放器,并设置如下表格结构 -

SONGS_DB- Song_ID,Song_Name

SONG_PLAYLIST Song_playlist_id,Song_id,Playlist_ID

PLAYLIST Playlist_ID,Playlist_Name

我面临的问题是显示某个播放列表中的所有歌曲,因为它需要跟随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

所有帮助赞赏x

sql sql-server vb.net tsql
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.