我有两个数据库表,'列表'和'注释'.
列表包含列_id,listname
Notes具有列_id,checked,list_id(它是Lists._id的外键),以及更多与此问题无关的列.
我想创建一个返回四列的查询:
Lists._id,Lists.listname,此列表中所有已检查Notes的计数,此列表中所有Notes的计数.
查询应返回列表中的所有条目.
我可以使用以下查询单独获取计数和_ids和列表名称
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
Run Code Online (Sandbox Code Playgroud)
在这些语句中,foo_id指的是我想要计算的列表的_id和总项目.
有人可以告诉我如何将这些全部放入一个查询中吗?
为计数列投放AS的加分点.
编辑:添加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
Run Code Online (Sandbox Code Playgroud)