2016-08-26 152 views
0

我想要兩個房間的兩個日期之間的可用房間的結果。顯示兩個日期範圍的結果?

我查詢

SELECT * 
FROM `roomcalendar` 
WHERE day BETWEEN '2016-08-29' and '2016-08-31' 

結果 enter image description here

此查詢不顯示任何結果。

select * 
FROM roomcalendar 
WHERE day between '2016-08-30' and '2016-08-31' 
AND avaroom != 0 having count(*) = datediff('2016-08-31','2016-08-30') 

我可以使用where roomname ='Room-A'但我不想使用它。使用房間名稱在兩個日期之間獲得兩間房間的其他方法?

+1

你沒有'group by',所以你的'count(*)'是不確定的。 –

+0

@MarcB你能展示如何使用group by。 ?謝謝。 –

+0

任何想法來獲得房間名稱的結果。它總是隻顯示一個結果。 –

回答

0

如果我正確你需要會是怎樣理解你的問題是這樣的:

SELECT r.roomname, SUM(r.avaroom) as availableRooms 
FROM roomcalendar r 
WHERE DAY BETWEEN '2016-08-29' AND '2016-08-31' 
GROUP BY r.roomname 

據我給你:

+----------+----------------+ 
| roomname | availableRooms | 
+----------+----------------+ 
| Room-A |    5 | 
| Room-B |    4 | 
+----------+----------------+ 

這是你想要的嗎?

0
SELECT * 
FROM `roomcalendar` r 
WHERE DAY BETWEEN '2016-08-29' AND '2016-08-31' AND r.`avaroom`>0 
ORDER BY r.`day` 
+0

雖然此代碼片段可能會解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要使用解釋性註釋來擠佔代碼,因爲這會降低代碼和解釋的可讀性! – FrankerZ