这是一个示例架构,可用于获得我的结果。
在这里,客户-购买历史为1:N关系。习俗可以购买n次。
PurchaseHistory-产品1:1关系。每次购买仅包含一种产品。
所需结果:
显示同时购买了Product1和product2或仅购买了product3的客户。
样本数据:
客户
购买历史:
产品1
产品2
预期答案:客户c2,因为他已经购买了product1和product2。
答案 0 :(得分:0)
我为您写了一个查询。未使用实际数据进行测试。但是我已经写了你的要求。试一试并进行一些更改,然后在mysql控制台上尝试一下。看看是否可以达到您想要的结果。
select c.name from purchasehistory ph
left join customer c on ph.customerid = c.customer_id
join product1 p1 on ph.purchase_id = p1.purchase_id
join product2 p2 on ph.purchase_id = p2.purchase_id
join prodcut3 p3 on ph.purchase_id = p3.purchase_id
where (p1.purchase_id is not null and p2.purchase_id is not null)
or p3.purchase_id is not null
答案 1 :(得分:0)
Select customer_id from purchasehistory t
Where (t.purchese_id in (select purchese_id from product1)
And t.purchese_id in (t.purchese_id in (select purchese_id from product2))
Or t.purchese_id in (t.purchese_id in (select purchese_id from product1)
这将起作用,尽管您的表方案应该更改,但您不希望每个产品都有一个表,它可以在3种产品(而不是100种)中使用。