订购每件产品的客户的T-SQL查询 - 如何?

时间:2015-09-28 04:40:22

标签: sql-server tsql join

我有一个 CustomerID 表,一个 ProductID 表和一个Orders表,其中列出了每个INDIVIDUAL(每个记录只有一个 ProductID )客户订购(数量不相关)。 有没有办法使用JOIN 列出过去订购了每件产品的客户? 换句话说,所有 customerID 在每个 productID 的订单表中都有相关订单...

我可以使用一些中间/临时表来完成它但我很好奇是否有一种方法可以使用JOIN。

谢谢。

克里斯

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

SELECT ...
FROM User
WHERE 
  (SELECT DISTINCT (ProductId) FROM <order items of User>)
  = (SELECT count(*) FROM product)

更直观(可能):

SELECT 
FROM USER
WHERE NOT EXISTS (
  SELECT * 
  from product 
  WHERE NOT EXISTS (
    SELECT * FROM <order items of User and product>))

答案 1 :(得分:0)

select custID 
(
   select distinct custID, prodID 
   from order
)  orderD 
group by custID 
having count(*) = ( select count(*) from products )