1
在上图/下面的情况。 我希望能够查询上一首歌曲,哪些歌曲音乐家是什么音乐家......
- 这是造成这种情况的正确模式?
- 我只是查询“SongMusicians”表吗?
这是大学的任务,我在理论上遇到了麻烦。
我最初的想法是只在音乐家桌上有歌曲,反之亦然。但有人告诉我需要一个“中介”表。
任何帮助将是惊人的
感谢
在上图/下面的情况。 我希望能够查询上一首歌曲,哪些歌曲音乐家是什么音乐家......
这是大学的任务,我在理论上遇到了麻烦。
我最初的想法是只在音乐家桌上有歌曲,反之亦然。但有人告诉我需要一个“中介”表。
任何帮助将是惊人的
感谢
这看起来OK了这种性质的问题。两个主表之间的链接表,让音乐家有多首歌曲,一首歌曲有多个音乐家。如果您没有它,并且您在表格音乐家中添加了一首歌曲(如果您将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';
非常感谢您! 只是澄清..所以当我有这个结构,我查询两个表(音乐家和歌曲)不是中间表,其中包含列表? 还没有看过Innerjoin幻灯片:/ 对不起,我想我现在得到它。你已经使用了内部连接,这样你就可以按名称而不是音乐家编号来搜索了吗? – user3075549
是的。就是这样。我想向您展示可以让您获得音乐家或歌曲详细信息的查询。如果你只关心ID,你可以简单地查询链接表。 –
没有那么完美。非常感谢你! – user3075549