2015-09-28 51 views
-3

我有一个客户ID表,的ProductID表和订单表,列出每个人(也就是只有一个的ProductID每条记录​​),客户订购(数量是不相关)。 有没有办法使用JOIN来列出过去已经订购了每件产品的客户? 换句话说已经在Orders表中相关的订单,每的productID所有的customerID小号...针对订购每个产品的客户的T-SQL查询 - 如何?

我可以用一些中间/临时表做,但我很好奇,如果有使用JOIN方式为了那个原因。

谢谢。

克里斯

+0

那你试试这么远吗? –

回答

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

这看起来可以诀窍,因为有一个原因,当有一个更简单的方法思考JOIN方块外时,注意力加在JOIN上。谢谢! –

+0

如果这是答案,您可以点击检查 – Paparazzi

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>)) 
相关问题