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個の持っている場合はご注文をクエリが返す必要があります1を同じクライアントと同じ店であるため、しかし戻っている3意味が受注を持つクライアントが、注文自身をカウントされません

解決?これはSQLiteであり、Android 4.1.1で使用されているため、一部のSQLite関数が使用できない場合があることに注意してください。

ユルゲンd

内部クエリは、注文のあるすべてのクライアントを取得します。外部クエリはそれらのレコードをカウントします

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]

編集
0

コメントを追加

0

関連記事