请参阅此sqlfiddle。在该表中,缺少从2014-09-21
到2014-09-30
的数据。
第二个sql是我想要的。如果分配之间没有差异,结果就可以了。但除此之外,我希望0
作为输出。因为有些日期没有分配。
请帮我解决这个问题。
感谢。
答案 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
答案 1 :(得分:0)
感谢所有关注我问题的人。目前似乎没有更好的解决方案(数据库方面)。因此,我通过循环日期并检查特定日期的数据库,在PHP方面进行此操作。我认为这不会是一个很大的性能问题,因为通常日期范围很小。
根据问题,这不是答案。但我会将其标记为答案。
谢谢!