Mysql 使用给定日期显示六个月的数据

Mysql 使用给定日期显示六个月的数据,mysql,Mysql,我需要mySQL查询的帮助。我想根据给定的firstDate和endDate显示前六个月。这两个都是从我的$得到php。 我想要的是,显示六个月,包括空的月份。 下面是我目前的问题 SELECT m.monthNo as monthGroup, count(f.id) AS bilangan from monthEmpty m LEFT JOIN (SELECT id,month, code FROM survey ) f ON DATE_FORMAT(f.month, '%c') = m

我需要mySQL查询的帮助。我想根据给定的firstDate和endDate显示前六个月。这两个都是从我的$得到php。 我想要的是,显示六个月,包括空的月份。 下面是我目前的问题

SELECT m.monthNo as monthGroup, count(f.id) AS bilangan from monthEmpty m 
LEFT JOIN 
(SELECT id,month, code FROM survey ) f 
ON DATE_FORMAT(f.month, '%c') = m.monthNo 
WHERE (month between DATE_SUB('2014-08-01', interval 5 month) and '2014-08-31') AND code = '001' 
group by monthGroup
对于我的monthEmpty,有一列是monthNo,其中的值是1,2,3,4,5,6,7,8,9,10,11和12。 对于调查表,我的id为responden,月份格式为YYYY-MM-DD,代码为responden。 当前我的查询仍然只显示有值的月份。 感谢如果有人能想出什么添加,使空月也显示。谢谢

SELECT m.monthNo AS monthGroup, COUNT( f.id ) AS bilangan
FROM monthEmpty m
JOIN (

SELECT id, 
MONTH , code
FROM survey
)f ON DATE_FORMAT( f.month,  '%c' ) = m.monthNo
AND (

MONTH BETWEEN DATE_SUB(  '2014-08-01', INTERVAL 5 
MONTH ) 
AND  '2014-08-31'
)
AND code =  '001'
GROUP BY monthGroup

使用此查询,您需要将where caluse与left join结合起来

它现在显示所有月份,甚至是空的。但是,我可以知道如何显示从给定日期算起的前六个月吗?实验:'2014-08-01'。因此,它将显示8月、7月、6月、5月、4月、mac。此查询显示2014-03-01和2014-08-31之间的数据。这是一个新查询,选择m.monthNo作为monthGroup,将f.id作为bilangan从Monthypty m左连接选择id,monthSurvey,日期上的调查f代码,格式为f.monthSurvey,“%c'=m.monthNo和f.monthSurvey在日期'2014-08-01'之间,间隔5个月和'2014-08-31',代码='001'按月分组。。我跟着你的询问。我不确定我是否遗漏了一些内容,因为它仍然显示1到12,而它应该仅显示3到8…请确认您希望所有1到12数据的0值在rantge之间,或者您希望仅在范围值和0值之间。如果混淆,我道歉。我试图使用给定的日期nexp:'2014-08-01'仅显示前六个月。因此,我的预期结果应该显示从3月、4月、5月、6月、7月和8月,无论它是否有价值。这就是为什么我创建了另一个假的表,即monthEmpty。目前,当我遵循上面的查询时,它根据我的monthEmpty表显示所有12个。我是否使用了正确的查询,是否正确使用了monthEmpty表?