首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询返回null而不是0。

问查询返回null而不是0。
EN

Stack Overflow用户
提问于 2013-12-13 18:04:49
回答 1查看 175关注 0票数 0

我有一个查询,它按月和年计算所有的工作ID编号,然后使用jpgraph创建过去13个月的图表。它工作得很好,除了七月没有工作ID号码,所以图表完全跳过了七月。

查询结果:

代码语言:javascript
复制
5
16
15
11
3
12
4
8
2
9
13
12

预期结果:

代码语言:javascript
复制
5
16
15
11
3
12
0
4
8
2
9
13
12

如您所见,为了使我的图表工作,我需要(0) 0,但是由于七月没有工作ID号,所以我的查询跳过了它。以下是我的疑问:

代码语言:javascript
复制
SELECT COUNT( WORK_ID_NUM ) AS count, 
DATE FROM SERVICE_JOBS 
WHERE (DATE BETWEEN '$lastyear' AND '$date') 
AND JOB_TYPE LIKE 'Street Light' 
GROUP BY YEAR( DATE ), MONTH( DATE )
 ORDER BY DATE
EN

回答 1

Stack Overflow用户

发布于 2013-12-13 18:09:01

要使查询返回七月的一行,需要有带有七月的行。您可以创建一个表,其中包含$lastyear和$date之间的所有日期,然后从该表到SERVICE_JOB进行外部连接。

代码语言:javascript
复制
SELECT COUNT( WORK_ID_NUM ) AS count, 
       allDates.DATE 
FROM AllDates 
Left outer join SERVICE_JOB
on AllDates.DATE = SERVICE_JOB.DATE
WHERE (AllDates.DATE BETWEEN '$lastyear' AND '$date') AND
(SERVICE_JOB.WORK_ID_NUM is NULL OR JOB_TYPE LIKE 'Street Light')
GROUP BY YEAR( AllDates.DATE ), MONTH( AllDates.DATE ) 
ORDER BY AllDates.DATE

在Server中,很容易创建一个公共表表达式,该表达式可以基于AllDates和$date为您填充$lastyear。对MySql不太确定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20573090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档