2016-09-13 81 views
1

我敢肯定,這是一個重複的,但我無法找到答案:SQLite的COUNT JOIN DISTINCT

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個訂單查詢應返回,因爲是同一個客戶端和同店將返回意義並不與訂單計算的客戶,但訂單本身

解決方案? 請記住這是SQLite,並且正在Android 4.1.1中使用,因此某些SQLite函數可能不可用

回答

2

內部查詢獲取所有客戶端的訂單。外部查詢計算這些記錄

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' 
+0

數! :3 –