2017-10-10 169 views
-1

我似乎無法在這裏過濾來自原始子查詢的結果。我究竟做錯了什麼?我試圖找到預定鄉村和搖滾表演的顧客(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)) 
+1

您可以篩選子查詢(在子查詢中),就像您可以篩選螞蟻查詢一樣。但我不明白爲什麼在這裏使用子查詢 – jean

回答

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,你是在告訴DBMS只返回這些客戶的ID通過您的子查詢返回。

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) 
+0

我需要理解爲學校過濾子查詢的概念。對於我來說,當你可以簡單地用初始子查詢來過濾所有東西時,它確實沒有意義。 –

+0

這是因爲你的示例IMO不需要子查詢。 – orhtej2