在下图/上图所示的情况中。 我希望能够查询,歌曲上有哪些音乐人以及音乐家正在播放哪些歌曲......
这是大学的一项任务,我对这个理论有困难。
我最初的想法是在音乐家表中获得歌曲,反之亦然。但有人告诉我需要一个“中间”表。
任何帮助都会很棒
由于
答案 0 :(得分:2)
对于这种性质的问题看起来不错。两个主表之间的链接表,让音乐家有多首歌曲,一首歌有多位音乐家。如果您没有它并且您在表音乐家中添加了一个歌曲(如果您将musicianid放入歌曲中,则相同的逻辑适用),您每次参与歌曲时都必须复制音乐家的所有信息。那不好。
要获取有关歌曲中的音乐家或其他内容的信息,请通过链接表加入表格以查找所需信息。
要获取音乐家所在歌曲的所有信息:
SELECT s.*
FROM songs s
INNER JOIN songmusicians sm ON sm.songid= s.songid
INNER JOIN musicians m ON sm.musicianid= m.musicianid
WHERE m.FirstName = 'Kurt' AND m.LastName = 'Kobain';
为了让所有参与歌曲的音乐家都参与其中:
SELECT m.*
FROM songs s
INNER JOIN songmusicians sm ON sm.songid= s.songid
INNER JOIN musicians m ON sm.musicianid= m.musicianid
WHERE s.songTitle = 'Smells like teen spirit';