我有两个数据库表,“列表”和“注释”。
列表有列 _id, listname
Notes 有列 _id、checked、list_id(这是 Lists._id 的外键)以及更多与此问题无关的列。
我想创建一个返回四列的查询:
Lists._id,Lists.listname,这个列表中所有勾选的Notes的个数,这个列表中所有Notes的个数。
查询应该返回列表中的所有条目。
我可以使用以下查询分别获取计数和 _ids & listnames
SELECT _id, listname FROM Lists
SELECT count(checked) FROM Notes WHERE checked='1' and list_id=foo_id
SELECT count(*) FROM Notes WHERE list_id=foo_id
在这些语句中,foo_id 指的是我要计算已检查项目和总项目数的列表的 _id。
谁能告诉我如何将这些全部放入一个查询中?
在计数列中添加 AS 的奖励积分。
最佳答案
EDIT:添加了 IFNULL
以在外连接不返回任何行时返回 0
作为 count_checked;添加别名。
SELECT
l._id,
l.listname,
IFNULL( SUM(n.checked), 0 ) AS count_checked,
COUNT(*) AS count_total
FROM lists l
LEFT OUTER JOIN notes n ON ( l._id = n.list_id )
GROUP BY l._id, l.listname
关于sql - 选择 COUNT() 函数时如何连接 SQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1966147/