伙计们,我有一条我非常努力的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
所有帮助表示赞赏
答案 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