我确定这是重复的,但我找不到答案:
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 函数可能不可用
最佳答案
内部查询获取所有有订单的客户。外部查询计算那些记录
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
)客户端的数量
SELECT count(distinct 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'
关于android - SQLite COUNT JOIN DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39480128/