带有3个表和过滤器的sqlite join语句

时间:2013-06-22 22:54:43

标签: android sql join filter

您对使用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(数10) cat2(数2) cat3(数3) cat4(伯爵4)

当我使用list = 1过滤时,该类别不显示空列

任何建议

1 个答案:

答案 0 :(得分:1)

您可以使用子查询:

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|