これは重複していると思いますが、答えが見つかりません。
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を同じクライアントと同じ店であるため、しかし戻っている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'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加