SQLite COUNT JOIN DISTINCT

时间:2016-09-13 22:51:16

标签: android sqlite join count

我确定这是重复但我找不到答案:

SQLITE 查询问题

表:

  • 客户端
  • 顺序

关系:客户有多个订单

成功条件:

获取订单

的客户数量

查询:

SELECT COUNT(Client.id) AS count
  FROM Client
  INNER JOIN Order
    ON Order.id = Client.id
    AND Order.storeId = Client.storeId // This is because Clients have many stores
  WHERE
    AND Order.id IS NOT NULL
    AND Order.date BETWEEN '12-09-2016 16:00:00' AND '13-09-2016 16:00:00'

问题

如果客户1,商店1有3个订单,则查询应返回 1 ,因为该客户端是同一个商店,而 BUT 正在返回 3 意思是不计算订单的客户,而是订单本身

解决方案? 请记住,这是SQLite,并且正在Android 4.1.1中使用,因此某些SQLite函数可能无法使用

1 个答案:

答案 0 :(得分:2)

内部查询获取所有订单的客户。外部查询计算这些记录

status="info"

更简单的版本是计算不同select count(*) from ( SELECT Client.id FROM Client INNER JOIN Order ON Order.id = Client.id AND Order.storeId = Client.storeId WHERE Order.date BETWEEN '12-09-2016 16:00:00' AND '13-09-2016 16:00:00' GROUP BY Client.id ) tmp )客户端的数量

distinct