2012-09-24 68 views
0

你好,這是2代表在我的數據庫: enter image description hereSQL查詢白天最高人民檢查可用性

我試圖獲取可用的日期的時間間隔的酒店。 在客房表中定義的類型的房間:如SIGNE:max_guests = 1,三重:max_guests = 3 因此,對於10人預訂我需要的東西,如:

SELECT SUM(rooms.max_guests * av.RoomAvailable) AS maxPeople 
FROM av AS av INNER JOIN rooms 
ON av.room = rooms.ID AND av.DateofDays BETWEEN '09/28/2012' AND '10/03/2012' 
GROUP BY av.userid 
HAVING Count(*) >= 6 

但是這並沒有真正適合我要求..它返回我總max_people可用/用戶ID我只需要檢查,如果每天每個用戶ID(酒店)有> = 10(max_people)提供

感謝溜溜的幫助

更新:如果我使用這個查詢:

SELECT av.userid, av.DateofDays, SUM(rooms.max_guests * 

av.RoomAvailable) AS maxPeople 
FROM av AS av INNER JOIN rooms 
ON av.room = rooms.ID AND av.DateofDays BETWEEN '09/28/2012' 

AND '10/03/2012' 
GROUP BY av.userid, av.DateofDays 
ORDER BY av.userid, av.DateofDays 

我得到這個: enter image description here

+0

這裏你是試圖找到所有可用的房間之間的天數爲sepecif人數? – AnandPhadke

+0

是的,如果每一天都有可用性。它只是需要返回我只有一個可用性爲max_people一天之間的用戶ID – Teodor

回答

1

您必須手動輸入天數。

WITH cte AS (
SELECT av.userid, av.DateofDays, SUM(rooms.max_guests * av.RoomAvailable) AS maxPeople 
FROM av AS av INNER JOIN rooms 
ON av.room = rooms.ID AND av.DateofDays BETWEEN '09/28/2012' AND '10/03/2012' 
GROUP BY av.userid, av.DateofDays 
HAVING SUM(rooms.max_guests * av.RoomAvailable) >= 10 
) 
select cte.userid 
from cte 
group by av.userid 
having COUNT(*) = 6 
+0

謝謝,但是因爲HAVING Count(*)> = 10我沒有看到任何結果,沒有它,我看到符合條件的結果和有超過10個max_guests ..讓我試試附上一張新照片 – Teodor

+0

謝謝,但我只需要返回我每天有可用性的用戶ID。在這種情況下,如果我刪除了2012年9月29日的可用性,仍然顯示我的列表,除了沒有記錄的09/29/2012 – Teodor

+0

@Teodor請參閱上面的更新 – Paparazzi

0

只是dateofdays添加到您的SELECT和GROUP BY。這將只返回天數/酒店> = 10

+0

謝謝..我想這麼或者,但它返回我沒有結果..如果我脫掉HAVING計數(*)> = 6然後它會告訴我6個不同日期的每個用戶id與max_people的6個記錄,但實際上我需要告訴我每個日期的用戶id max_days> = 10 – Teodor

+0

請查看更新的照片這就是我得到的。我只需要向我展示唯一的用戶ID 1,因爲它擁有超過10個max_people,整天間隔 – Teodor