SQL查找属于产品类别的订单

时间:2010-10-08 08:08:47

标签: sql

我试图在数据库中找到产品属于产品类别的所有订单。但该类别存储在Orderline表中。

我的表结构大致是:

订购表

ID
Date

OrderLine表

ID
Product_ID
ProductCategory_ID
Quantity

产品类别表

ID
Name

我的sql看起来像:

Select 
 o.Id,
    o.Date,
    pf.Name,
From Order o
 JOIN OrderLine ol on o.Id = ol.Order_Id
 JOIN ProductCategory pc on ol.ProductCategory_Id = pc.Id

WHERE 
 pc.ID in ('1000','1001', '1002')

但是当订单有多个属于同一类别的订单行时,我会遇到每个订单多行。由于我只想要一个摘要,我只想要每个订单一行。

2 个答案:

答案 0 :(得分:2)

使用DISTINCT子句:

Select DISTINCT
    o.Id,
    o.Date,
    pc.Name,
From Order o
 JOIN OrderLine ol on o.Id = ol.Order_Id
 JOIN ProductCategory pc on ol.ProductCategory_Id = pc.Id
WHERE 
 pc.ID in ('1000','1001', '1002')

这将确保只返回不同的行(不同的行)。

您的SELECT子句中似乎也有语法错误(您的意思是pc.Name而不是pf.Name吗?)。

答案 1 :(得分:0)

使用GROUP BY语句使用指定的列将多个行组合在一起。

Select 
 o.Id,
    o.Date,
    pc.Name,
From Order o
 JOIN OrderLine ol on o.Id = ol.Order_Id
 JOIN ProductCategory pc on ol.ProductCategory_Id = pc.Id
WHERE 
 pc.ID in ('1000','1001', '1002')
GROUP BY o.id, o.date, pc.Name
相关问题