数据库具有以下架构:
product:
id: integer,
model: string,
...
customer:
id: integer,
name: string,
...
order:
product_id: integer,
customer_id: integer,
...
我想要一个由(至少)一组客户订购的所有产品的列表 - 也就是说,对于一组客户(A,B,C),我想要一个查找所有X的查询产品数据库中有订单记录[X,A],[X,B],[X,C]
对于给定的产品,我可以通过使用连接获得订单列表,但我不确定如何收集一组订单并将它们与列表进行比较。我想有一种方法可能就是拥有一个子查询链,一个用于列表中的每个客户,但这看起来真的很难看。所有表的大小可能很大。有一个相对较好的查询来做到这一点?或者也许是组织表格的更好方法?我是一个SQL新手,抱歉,如果我忽略了一些明显的东西。我确实看到this,这是没有希望的。
罗素
答案 0 :(得分:0)
感谢那些看过的人,我找到了一个看起来不错的答案。我没有包含的另一个条件是订单表中没有重复项,所以这可行(可能因为我的实际数据库有不同的名称而关闭,因此查询是手动输入的)。可能在某处使用UNIQUE处理重复。如果出于任何原因这是不好的,或者有更好的方式我会欣赏单挑。
SELECT p.id,or.product_id,count()FROM orders或INNER JOIN product p ON p.id = or.product_id WHERE or.customer_id IN(1,2,3)GROUP BY or.customer_id有计数()> 2;