SQLite查询以查找包含给定客户集的订单集

时间:2016-06-13 06:05:19

标签: sql sqlite

数据库具有以下架构:

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,这是没有希望的。

罗素

1 个答案:

答案 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;