MySQL:不包括表中的日期

时间:2014-09-02 12:33:48

标签: mysql sql

请参阅此sqlfiddle。在该表中,缺少从2014-09-212014-09-30的数据。

第二个sql是我想要的。如果分配之间没有差异,结果就可以了。但除此之外,我希望0作为输出。因为有些日期没有分配。

请帮我解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT room_id, from_date, to_date, MIN(rooms) rooms FROM(

SELECT DISTINCT room_id, from_date, to_date, SUM(IFNULL(rooms,0)) rooms 
FROM room_allotment 
WHERE (from_date BETWEEN '2014-09-21' AND '2014-09-29'  and
     to_date BETWEEN '2014-09-21' AND '2014-09-29' ) AND room_id = '1'
GROUP BY room_id 
UNION ALL
SELECT DISTINCT room_id, from_date, to_date, SUM(IFNULL(rooms,0)) rooms 
FROM room_allotment 
WHERE (from_date BETWEEN '2014-09-21' AND '2014-09-29'  and
     to_date BETWEEN '2014-09-21' AND '2014-09-29' ) AND room_id = '1'
GROUP BY room_id
)r
GROUP BY room_id

SQL FIDDLE

答案 1 :(得分:0)

感谢所有关注我问题的人。目前似乎没有更好的解决方案(数据库方面)。因此,我通过循环日期并检查特定日期的数据库,在PHP方面进行此操作。我认为这不会是一个很大的性能问题,因为通常日期范围很小。

根据问题,这不是答案。但我会将其标记为答案。

谢谢!