我有一个查询,它按月和年计算所有的工作ID编号,然后使用jpgraph创建过去13个月的图表。它工作得很好,除了七月没有工作ID号码,所以图表完全跳过了七月。
查询结果:
5
16
15
11
3
12
4
8
2
9
13
12预期结果:
5
16
15
11
3
12
0
4
8
2
9
13
12如您所见,为了使我的图表工作,我需要(0) 0,但是由于七月没有工作ID号,所以我的查询跳过了它。以下是我的疑问:
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发布于 2013-12-13 18:09:01
要使查询返回七月的一行,需要有带有七月的行。您可以创建一个表,其中包含$lastyear和$date之间的所有日期,然后从该表到SERVICE_JOB进行外部连接。
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不太确定。
https://stackoverflow.com/questions/20573090
复制相似问题