我可以在具有两个主键的数据库上进行两次选择吗?

时间:2016-04-07 07:29:13

标签: java android sql sqlite

大家好,我正在为音乐应用程序的数据库工作,到目前为止我有这个。

Song 
SongId Name Artist

Playlist
PlaylistId Name

Playlist_with_songs
id (fk)PlaylistId  (fk)SongId

最后一张表都是主键。

所以我想知道我的查询会是什么样子。 防爆。如果我想用playlistId 5获得所有歌曲,那么我会 必须从Song表中获取实际的歌曲,我可以使用哪种语句。

此外,如果播放列表被删除,这仍然是一个很好的格式,但仍然可以保留所有歌曲。级联会在那里工作吗?

由于 (我正在使用sqlite。)

1 个答案:

答案 0 :(得分:1)

SQL部分

老式的方式:

$('<div/>',{ class : 'example'}).appendTo("p");

现代方式:

SELECT * FROM Song
WHERE SongId IN (
  SELECT SongId FROM Playlist_with_songs
  WHERE Playlist_id = 5)

删除部分

这种模式确实用于n:m关系。您应该为两个FK定义SELECT s.* FROM Song s JOIN Playlist_with_songs ps ON ps.SongId = s.SongId AND ps.Playlist_id = 5