Какую операцию SQL я должен использовать? - PullRequest
1 голос
/ 21 января 2011

У меня есть две таблицы:

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).Это типичная настройка таблицы?

Ответы [ 2 ]

3 голосов
/ 21 января 2011
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 голос
/ 21 января 2011
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=?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...