Sql 根据第三个表上的条件筛选的两个表上的Groupby计数查询
我有三个表格:分类表、邮件表和分类表。本SQLFIDLE中概述了表之间的关系,并提供了一些示例数据: 我首先运行一个查询以获取分配给每个类别的电子邮件数量:Sql 根据第三个表上的条件筛选的两个表上的Groupby计数查询,sql,Sql,我有三个表格:分类表、邮件表和分类表。本SQLFIDLE中概述了表之间的关系,并提供了一些示例数据: 我首先运行一个查询以获取分配给每个类别的电子邮件数量: SELECT Category.name, count(Classification.category_id) FROM Category LEFT OUTER JOIN Classification ON Classification.category_id = Category.id GROUP BY Category.name 这
SELECT Category.name, count(Classification.category_id) FROM Category LEFT OUTER JOIN Classification ON Classification.category_id = Category.id GROUP BY Category.name
这很好用
但是我现在想添加一个基于电子邮件收集中日期的过滤器。如果我加入了过滤器集合:
SELECT Category.name, count(Classification.category_id) FROM Category JOIN Mail ON Mail.date < '2019-03-24' LEFT OUTER JOIN Classification ON Classification.category_id = Category.id GROUP BY Category.name
但现在计数只增加了一倍,而且似乎连过滤器都没有应用。为什么过滤器不工作?我应该做什么来修复它?您需要分类和邮件之间的连接条件:
示例数据、期望的结果和数据库标记都很有用。
SELECT Category.name, count(Classification.category_id) FROM Category JOIN Mail ON Mail.date < '2019-03-24' LEFT OUTER JOIN Classification ON Classification.category_id = Category.id GROUP BY Category.name
SELECT ca.name, count(cl.category_id)
FROM Category LEFT JOIN
Classification cl
ON cl.category_id = c.id LEFT JOIN
Mail m
ON m.id = cl.mail_id AND -- your JOIN key goes here
m.date < '2019-03-24'
GROUP BY c.name ;