SQL查询的输出不足

时间:2015-10-03 16:40:49

标签: sql output northwind

我正在使用northwind db:http://dev.assets.neo4j.com.s3.amazonaws.com/wp-content/uploads/Northwind_diagram.jpg

我必须输出CustomerID ALFKI发出的所有订单,其中包含多个唯一产品。我得到了正确的订单,但我无法弄清楚为什么每个订单只打印一个产品名称。

我的查询:

SELECT a.OrderID, p.ProductName
FROM Products p 
INNER JOIN 'Order Details' a 
  ON (p.ProductID = a.ProductID) 
INNER JOIN Orders b 
  ON (a.OrderID = b.OrderID) 
WHERE (b.CustomerID = 'ALFKI') 
GROUP BY a.OrderID 
HAVING COUNT(DISTINCT a.ProductID) > 1

1 个答案:

答案 0 :(得分:1)

您需要GROUP BYHAVING成为子查询的一部分,主查询使用从子查询返回的OrderID列表作为过滤条件来选择详细信息。请尝试以下T-SQL语法:

SELECT 
    a.OrderID, 
    p.ProductName
FROM 
    Products p 
    INNER JOIN [Order Details] a 
        ON (p.ProductID = a.ProductID) 
    INNER JOIN Orders b 
        ON (a.OrderID = b.OrderID) 
WHERE 
    a.OrderID IN 
    (
        SELECT a.OrderID
        FROM [Order Details] a 
        INNER JOIN Orders b 
            ON (a.OrderID = b.OrderID) 
        WHERE (b.CustomerID = 'ALFKI') 
        GROUP BY a.OrderID 
        HAVING  COUNT(DISTINCT a.ProductID) > 1
    )