我有一个客户ID表,的ProductID表和订单表,列出每个人(也就是只有一个的ProductID每条记录),客户订购(数量是不相关)。 有没有办法使用JOIN来列出过去已经订购了每件产品的客户? 换句话说已经在Orders表中相关的订单,每的productID所有的customerID小号...针对订购每个产品的客户的T-SQL查询 - 如何?
我可以用一些中间/临时表做,但我很好奇,如果有使用JOIN方式为了那个原因。
谢谢。
克里斯
我有一个客户ID表,的ProductID表和订单表,列出每个人(也就是只有一个的ProductID每条记录),客户订购(数量是不相关)。 有没有办法使用JOIN来列出过去已经订购了每件产品的客户? 换句话说已经在Orders表中相关的订单,每的productID所有的customerID小号...针对订购每个产品的客户的T-SQL查询 - 如何?
我可以用一些中间/临时表做,但我很好奇,如果有使用JOIN方式为了那个原因。
谢谢。
克里斯
select custID
(
select distinct custID, prodID
from order
) orderD
group by custID
having count(*) = (select count(*) from products)
这看起来可以诀窍,因为有一个原因,当有一个更简单的方法思考JOIN方块外时,注意力加在JOIN上。谢谢! –
如果这是答案,您可以点击检查 – Paparazzi
您可以使用这样的事情:
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>))
那你试试这么远吗? –