我有几张名为“分享”,“播放列表”,“群组”,“内容”的表格。
分享表:
playlistID, expirationDate, groupID
群组表:
userID ,groupID
播放列表:
Playlistid, contentUid
内容表:
contentID, contentUid
在这里,我想获取给定userID的contentID和expirationDate。
使用'userId',我获得了该用户的'groupID'列表,并使用“sharing”表中的'groupID'进行了检查。如果“共享”表有'groupID',我拿了那些'playlistID'并使用'playlisID'我拿了'contentID'但是我想得到“共享”表中的contentID的'expirationDate' / p>
下面的查询返回contentID,而不是它所属的播放列表的expirationDate,因为我使用'IN'
使用了子查询使用的查询:
SELECT ContentID
FROM content
WHERE contentUid IN (SELECT contentuid
FROM playlist
WHERE playlistuuid IN (SELECT playlistID
FROM sharing
WHERE groupID IN (SELECT GroupID
FROM groups
WHERE UserID = 605)
AND playlistID IS NOT NULL)
答案 0 :(得分:0)
为此,子查询可能不是最佳选择。尝试加入你的桌子:
SELECT c.ContentUid, s.expirationDate
FROM content c, playlist p , sharing s, groups g
WHERE c.contentUid = p.contentuid
AND p.playlistid = s.playlistID
AND s.groupID = g.groupID
AND g.userID = 605
现在,您可以从任何表格中的相关记录中访问任何内容。
答案 1 :(得分:0)
SELECT c.ContentUid, s.expirationDate
FROM content c
JOIN playlist p
ON c.contentUid = p.contentuid
JOIN sharing s
ON p.playlistid = s.playlistID
JOIN groups g
ON s.groupID = g.groupID
WHERE g.userID = @userID