嘿伙计们,我有一个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中,您可以使用子句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