带有三个表的SQL查询

时间:2013-04-11 16:42:43

标签: sql sql-server select join

我需要帮助构建一个返回三个不同表的结果的SQL查询。我已成功为两个表创建语句,但无法获得所有三个表。

表格和相关字段如下:

Order        OrderItem       Product
-------      -----------     -----------
orderId      orderId         productCode
status       productCode     productName
             quantity

我正在寻找所需的结果集:

[productCode]    [productName]    [orderCount]
-------------    -----------      ----------
123              widget           3
456              thing            2

结果将按productCode的{​​{1}},OrderItem的{​​{1}}以及产品订购和发货的次数进行分组。

发货状态来自productName上的Product字段。即仅包含status Order字段OrderItem已被“发货”的行。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT
    c.productCode,
    c.productName,
    COUNT(*) orderCount
FROM Order a
INNER JOIN OrderItem b
ON a.orderId = b.orderId
INNER JOIN Product c
ON b.productCode = c.productCode
WHERE status = 'shipped'
GROUP BY
    c.productCode,
    c.productName

答案 1 :(得分:0)

试试这个:

select 
    p.productCode, p.productName, count(o.OrderId) as orderCount,
    sum(oi.quantity) as orderQuantity -- Optional (if you want the sum of products ordered)
from
    [product] as p
    inner join [orderItem] as oi on p.productCode = oi.productcode
    inner join [order] as o on oi.orderId = o.orderId
group by 
    p.productCode, p.productName