首页 文章

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

提问于
浏览
0

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

我的表格结构大致如下:

Order Table

ID
Date

OrderLine Table

ID
Product_ID
ProductCategory_ID
Quantity

Product Category Table

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 回答

  • 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 ?) .

  • 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
    

相关问题