sql - 选择 COUNT() 函数时如何连接 SQL 表?

标签 sql join sqlite

我有两个数据库表,“列表”和“注释”。
列表有列 _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/

相关文章:

mysql - MySql建表出错 : check the manual that corresponds to your MySQL server version for the right syntax to use near ')'

sqlite - SQLite3:附加:memory:已经创建的数据库?

mysql - 指定 GROUP BY 值的首选结果

sql - Rails:在生产日志中显示SQL查询

java - Hibernate如果@NotFound,插入数据库

java - SQLite 操作系统抽象层?

android - 如何访问 Android 模拟器数据库的内容?

mysql - 在 2 个查询的联合中遇到问题

join - 参加弹性搜寻

sql - SQL 表中的输出 : without using JOIN