【发布时间】:2009-09-28 02:58:36
【问题描述】:
我有两张桌子,product 和 sold_record。 product 包含我的产品列表,而 sold_record 包含我的所有交易。如何选择客户 A 和客户 B 都购买的不同产品列表?
【问题讨论】:
-
“你的地段”是什么意思?我不是以英语为母语的人。
我有两张桌子,product 和 sold_record。 product 包含我的产品列表,而 sold_record 包含我的所有交易。如何选择客户 A 和客户 B 都购买的不同产品列表?
【问题讨论】:
如果您的 sold_record 表具有产品 ID 和客户 ID,则查询将是:
select distinct s1.product_id
from sold_record as s1, sold_record as s2
where s1.customer_id = "Customer A"
and s2.customer_id = "Customer B"
and s1.product_id = s2.product_id;
使用连接可能有更简单的方法,但这应该可行。
【讨论】:
假设表Product 有一个主键ProdID,表Sold 有一个外键到Product 的同名以及一个Customer 字段(可能是另一个外键到第三个表Customer,但既然你说必须只有两个表,我们将假设一个字符串是客户名称)。那么:
Select DISTINCT Product.ProdID
From Product
Inner Join Sold SA On (Product.ProdID=SA.ProdID
AND SA.Customer='A')
Inner Join Sold SB On (Product.ProdID=SB.ProdID
AND SB.Customer='B')
将为您提供有问题的 ProdID(当然,您也可以从该表中获取其他列,我们只是不知道这些列可能是什么;-)。
【讨论】: