Sql server 针对订购每种产品的客户的T-SQL查询-如何?

Sql server 针对订购每种产品的客户的T-SQL查询-如何?,sql-server,tsql,join,Sql Server,Tsql,Join,我有一个CustomerID表、一个ProductID表和一个Orders表,其中列出了每个记录中只有一个ProductID的个人,这些记录与客户订购数量无关。 有没有一种方法可以使用JOIN列出过去订购过每种产品的客户? 换句话说,对于每个productID,在orders表中具有关联订单的所有CustomerID 我可以用一些中间/临时表来完成,但我很好奇是否有一种方法可以使用JOIN 多谢各位 Cris您可以使用以下内容: SELECT ... FROM User WHERE (SE

我有一个CustomerID表、一个ProductID表和一个Orders表,其中列出了每个记录中只有一个ProductID的个人,这些记录与客户订购数量无关。 有没有一种方法可以使用JOIN列出过去订购过每种产品的客户? 换句话说,对于每个productID,在orders表中具有关联订单的所有CustomerID

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

多谢各位


Cris

您可以使用以下内容:

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>))

到目前为止,你尝试了什么?这看起来起到了作用,出于某种原因,当有一种更简单的方法在连接方之外思考时,我专注于连接。非常感谢。如果这是答案,您可以单击“检查”
select custID 
(
   select distinct custID, prodID 
   from order
)  orderD 
group by custID 
having count(*) = ( select count(*) from products )