我正在使用Lyric数据库。我需要列出名为Bryce Sanders的成员所有的曲目。
表格如下:
TitleID TrackNum TrackTitle
TitleID ArtistID 标题 StudioID 流派
ArtistID ARTISTNAME 市 区域 国家
MEMBERID 名字 姓 地址 市 区域 国家 SalesID
SalesID 名字 姓 声母 监
Bryce Sanders是会员表的一部分。 SalesID是该表的foriegn键。也许我可以在聪明的联接中使用SalesID来查找他录制的TrackTitles。
同样问题是:我需要列出名为Bryce Sanders的成员所播放的所有曲目。数据库是Lyric。
我的尝试是:
SELECT Members.Lastname, Members.FirstName, Tracks.TrackTitle
FROM Members, Tracks
WHERE Members.lastname = "Sanders";
但我不认为这完全解决了它。
答案 0 :(得分:2)
你会做这样的事情:
SELECT tr.*
FROM tracks tr
INNER JOIN titles ti ON tr.titleID = ti.titleID
INNER JOIN artists ar ON tr.artistID = ti.artistID
INNER JOIN Members me ON me.artistID = ar.artistID -- THIS IS MISSING.
WHERE me.lastname = 'Sanders' AND me.firstname = 'Bryce';
你必须有一些方式加入MEMBER和ARTIST,我在你的问题中没有看到它。 我写了一个例子,在成员中添加一个artistID,使其成为“艺术家”的一部分
答案 1 :(得分:0)
您需要一个交易或销售表,其中包含每个成员购买的跟踪列表。此表还可以包含销售人员的if。
会员表上不需要销售人员。如果销售人员也是成员,那么外键应该是相反的,否则这两个表之间应该没有直接关系。
答案 2 :(得分:0)
是的,我会添加曲目和销售之间的关系。
MemberID TrackID。
答案 3 :(得分:0)
我根据您的描述看待它的方式是Members
和Tracks
具有many-to-many
类型的关系。如果是这种情况,那么最好制作一个能产生两对一关系的中间表。在这种情况下,您可以将其命名为MembersTracks
表。这意味着Member
会在MembersTracks
表格中关联多个曲目,而Track
会有很多Members
与之关联。
MembersTracks
表的可能字段/列为:
MembersTracksID (PK), MembersID (FK), TrackNum (FK), SubscriptionDate
使用新添加的中间表,你可以像这样查询:
SELECT M.Lastname, M.Firstname, T.TrackTitle
FROM MembersTracks MT
INNER JOIN Members M
ON MT.MembersID = M.MembersID
INNER JOIN Tracks T
ON MT.TrackNum = T.TrackNum
INNER JOIN Titles
ON T.TitleID = Titles.TitleID
WHERE M.Lastname = 'Sanders' AND M.Firstname = 'Bryce'