我似乎无法在此处过滤原始子查询的结果。我究竟做错了什么?我正在努力寻找已预订乡村和摇滚演出的客户(6,11)。我正在使用sql server 2014。
SELECT cs.CustomerID
FROM cs
(SELECT ms.StyleName, ms.StyleID, cs.CustomerID
FROM Musical_Styles ms
INNER JOIN Entertainer_Styles es
ON ms.StyleID = es.StyleID
INNER JOIN Engagements egs
ON es.EntertainerID = egs.EntertainerID
INNER JOIN Customers cs
ON egs.CustomerID = cs.CustomerID
WHERE es.StyleID IN (6, 11))
答案 0 :(得分:1)
在这里使用子查询的重点是什么?我认为如果这不能提供您想要的结果,您的数据模型可能需要一些额外的解释。
SELECT cs.CustomerID FROM Entertainer_Styles es
INNER JOIN Engagements egs ON es.EntertainerID = egs.EntertainerID
INNER JOIN Customers cs ON egs.CustomerID = cs.CustomerID
WHERE es.StyleID IN (6, 11)
答案 1 :(得分:0)
你的语法有点不对。
SELECT cs.CustomerID
FROM cs
where cs.CustomerID IN
(
SELECT cs.CustomerID
FROM Musical_Styles ms
INNER JOIN Entertainer_Styles es
ON ms.StyleID = es.StyleID
INNER JOIN Engagements egs
ON es.EntertainerID = egs.EntertainerID
INNER JOIN Customers cs
ON egs.CustomerID = cs.CustomerID
WHERE es.StyleID IN (6, 11)
)
子查询需要返回一个id列表(作为唯一的列),并说cs.CustomerID IN在哪里,你告诉DBMS只返回那些由你的子查询返回ID的客户。