SQL选择查询选择3种不同的产品

时间:2016-06-15 11:11:50

标签: sql database postgresql

晚安,

我一直在努力处理我的数据库上的选择查询,我想确定已经从至少3个不同产品类别下订单3个产品的客户。 然后我想打印CustomerID和订单号。

这是我的数据库图表: Database for bike company design

任何答案都会有所帮助,

真诚的Thanos。

4 个答案:

答案 0 :(得分:0)

我还没有对此进行过测试,但我认为它应该接近正确:

SELECT h.CustomerID, COUNT(DISTINCT h.SalesOrderID)
FROM SalesOrderHeader h
INNER JOIN SalesOrderDetail d1 ON h.SalesOrderID = d1.SalesOrderID
INNER JOIN SalesOrderDetail d2 ON h.SalesOrderID = d2.SalesOrderID
INNER JOIN SalesOrderDetail d3 ON h.SalesOrderID = d3.SalesOrderID
INNER JOIN Product p1 ON d1.ProductID = p1.ProductID
INNER JOIN Product p2 ON d2.ProductID = p2.ProductID
INNER JOIN Product p3 ON d3.ProductID = p3.ProductID
WHERE p1.ProductCategoryID <> p2.ProductCategoryID
  AND p2.ProductCategoryID <> p3.ProductCategoryID
  AND p1.ProductCategoryID <> p3.ProductCategoryID
GROUP BY h.CustomerID

答案 1 :(得分:0)

select CustomerId, count(*)
from(
  select CustomerId
  from SalesOrderHeader soh
  join SalesOrderDetail sod using (SalesOrderID)
  join Product p using (ProductId)
  group by CustomerId, SalesOrderId
  having count(distinct ProductCategoryID) > 2
) a
group by CustomerId

答案 2 :(得分:0)

我认为这应该会得到结果

Select CustomerID,SalesOrderID , count(CategoryID) CatCount  
From 
SalesOrderHeader Head inner join SalesOrderDetail Det 
on Head.SalesOrderID = Det.SalesOrderID
inner join Product Prod
on Prod.ProductID = Det.ProductID
inner join ProductCategory PCat
on Prod.CategoryID = PCat.CategoryID
Group By CustomerID,SalesOrderID
Having count(CategoryID) > 3

答案 3 :(得分:0)

喜欢:&#34;无法解决此SQL查询&#34;

select CustomerID,count(*) as amount_of_order from 
SalesOrder join 
(
   select SalesOrderID,count(distinct ProductCategoryID) CategoryCount 
   from SalesOrderDetail JOIN Product using (ProductId)
   group by 1
 ) CatCount using (SalesOrderId) 
 group by 1 
 having bool_or(CategoryCount>=3) -- At least on CategoryCount>=3