【问题标题】:sqlite join statement with 3 tables and filters带有 3 个表和过滤器的 sqlite 连接语句
【发布时间】:2014-07-11 14:09:33
【问题描述】:

您好,我对带有 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)

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

任何建议

【问题讨论】:

    标签: android sql join filter


    【解决方案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|
    

    【讨论】:

    • 是的,它很完美,我什么都懂,但是你能解释一下 sum() 函数是用于聚合的,所以它有什么作用,因为没有任何东西添加到计数中谢谢
    • 它在那里是因为在我的第一种方法中需要sum(),我在发布之前对其进行了更改,但忘记修复该部分。然而它是无害的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2012-03-15
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    相关资源
    最近更新 更多