我正在对查询进行形式化,以按日期排序提供过去一年中提交的报告数量。我用php获取当前年份和月份:
$year = date('Y') - 1;
$month = date('m');
并执行以下查询:SQL:
SELECT month(date_lm) AS `month` ,
count(*) AS `count`
FROM `reports`
WHERE (status = 'submitted')
AND (date_lm > 2012-08)
GROUP BY month(date_lm)
ORDER BY month(date_lm) ASC
而且由于去年只提交了1个结果,因此我只得到了1个结果…
| month | count |
| 7 | 1 |
但是我希望结果集显示出来:
| month | count |
| 9 | 0 |
| 10 | 0 |
| 11 | 0 |
| 12 | 0 |
| 1 | 0 |
| 2 | 0 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 1 |
| 8 | 0 |
那可能吗?
您应该将此表与1..12表保持联接。像这样的东西:
SELECT Months.id AS `month` ,
COUNT(`reports`.date_lm) AS `count`
FROM
(
SELECT 1 as ID UNION SELECT 2 as ID UNION SELECT 3 as ID UNION SELECT 4 as ID
UNION
SELECT 5 as ID UNION SELECT 6 as ID UNION SELECT 7 as ID UNION SELECT 8 as ID
UNION
SELECT 9 as ID UNION SELECT 10 as ID UNION SELECT 11 as ID UNION SELECT 12 as ID
) as Months
LEFT JOIN `reports` on Months.id=month(`reports`.date_lm)
AND
(status = 'submitted')
AND (date_lm > 2012-08)
GROUP BY Months.id
ORDER BY Months.id ASC
SQL Fiddle演示
问题内容: 我有这种简单的查询,它返回给定id的非空整数字段: 问题是,如果找不到ID,则结果集为空。我需要查询始终返回一个值,即使没有结果也是如此。 我有这个东西工作,但我不喜欢它,因为它运行相同子查询的2倍: 如果该行存在,则返回field1,否则返回0。有什么改进的方法吗? 谢谢! 编辑以下一些评论和答案 :是的,它必须在 单个查询语句中, 并且我不能使用count技巧,因为 我只需要返回1
问题内容: 我有一个带有2个表的MySql数据库: 国家是公正的。 结果是a ,a和a 。 并非所有国家/地区在每个日期都有结果。 如何创建一个查询,列出所有国家及其特定结果,但仍然列出它们,并且如果结果表上没有结果,则显示0? 问题答案: 在两个表之间使用LEFT JOIN 要显示0(对于该列),如果没有结果,请使用IFNULL。
我希望执行一个(Postgre)SQL本机查询,它既不是“选择”查询,也不是“更新”查询,也不是“删除”查询。它是“刷新物化视图名称”据我所知没有结果。 使用JPA/JPQL执行此类查询的正确方法是什么? 似乎需要结果集或更新/删除计数。
问题内容: 我正在生成要显示在折线图中的数据。不幸的是,我无法弄清楚如何使上面的查询显示0来表示没有用户注册的日期。所以目前我的输出可能是这样的: 但是我想要的是 我目前确实有一个工作版本,该版本将MySQL结果存储到数组中,然后PHP循环遍历并填补空白。这似乎很混乱,我希望可以通过MySQL解决方案。我已经对该站点进行了很好的搜索,但是努力了解一些实现。有什么建议么? 问题答案: 您可以使用My
我使用spring数据和hibernate。我有一个实体(TestEntity)。我创建了一个自定义hibernate类型,将一个字符串字段反序列化为两列。如果我持久化一个实体,然后对其进行更改,则一切正常,hibernate会发送更新查询(它使我的类型正常工作,而对DB的更新查询会将我的旧列“拆分”为两个新列)。但我的目标是让这项记录成为移民之王。我不能使用普通的DB迁移,因为我的自定义类型中有