2

こんにちは、SQLite を使用した Android でのこの SQL クエリについて少し混乱しています。

私は3つの単純なテーブルを持っています テーブルカテゴリ

   |_id|name| 
   |1  |cat1
   |2  |cat2
   |3  |cat3
   |4  |cat4

テーブルリスト

   |_id|name| 
   |1  |list1
   |2  |list2
   |3  |list3
   |4  |list4

そして、前のテーブルの id を含む他のテーブルがあります

|_id|category|list   |name
| 1 |2       |1      |item1
| 2 |1       |2      |item2
| 3 |2       |3      |item3
| 4 |2       |1      |item4

常に cat1 (count 10) cat2 (count 2) cat3 (count 3) cat4 (count 4) として表示されるように、cat テーブルに参加したままにします。

where list = 1でフィルタリングすると、カテゴリにnull列が表示されません

助言がありますか

4

1 に答える 1

0

サブクエリを使用できます:

SELECT category.name as cat, B.catcount as catcount
FROM category LEFT JOIN (SELECT table3.category, count(*) AS catcount
FROM table3
WHERE table3.list=1
GROUP BY table3.category) as B ON category.[_id] = B.category;

次のような出力が得られるはずです。

|cat  |catcount|
|cat1 |    null|
|cat2 |       2|
|cat3 |    null|
|cat4 |    null|
于 2013-06-22T23:26:09.780 に答える