我有两张桌子:
TABLE 'songs'
song_id --some other columns about this song
-------
1
2
3
TABLE 'song_ownership'
user_id song_id
------- -------
28 1
28 3
538 1
234 2
我有兴趣执行查询,其中给定user_id
我已经返回了他们拥有的所有歌曲。例如,您可以看到用户28拥有两首歌曲。
顺便说一句,这是我知道如何规范化这个表的最佳方法,并且对于如何更传统地存储这些数据的建议持开放态度(我只是在学习SQL)。这是典型的表格设置吗?
答案 0 :(得分:3)
select songs.*
from songs
inner join song_ownership on song_ownership.song_id = songs.song_id and
song_ownership.user_id=@user_id
假设同一个用户不能拥有两次相同的歌曲。到目前为止,你的标准化看起来很好您的song_ownership表将是“多对多”表,并且(如果歌曲用户关联是唯一的),您可以在两列上放置复合主键,并且您的用户将位于单独的表中。
答案 1 :(得分:1)
select * -- choose only the columns you're interested to, like user id and song name
from songs
inner join song_ownership on song_ownership.song_id=songs.song_id
where song_ownership.user_id=?