2011-01-21 112 views
1

我有兩個表:我應該使用什麼SQL操作?

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)提出建議。這是一個典型的表設置?

回答

3
select songs.* 
from songs 
inner join song_ownership on song_ownership.song_id = songs.song_id and  
[email protected]_id 

假設同一個用戶不能擁有同一首歌兩次。你的規範化看起來很好!您的song_ownership表格將成爲「多對多」表格,並且(如果歌曲用戶關聯是唯一的),則可以在兩列上放置複合主鍵,並且您的用戶將位於單獨的表格中。

+0

+1更喜歡你的查詢到我的! :-) – InSane

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=?