0

こんにちは、これは私のデータベースの2つのテーブルです: ここに画像の説明を入力

一定の期間、利用可能なホテルを取得しようとしています。部屋のテーブルでは、部屋のタイプが定義されています: 例: Signe:max_guests=1, Triple: 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 / userIDが返されます.userID(ホテル)ごとに> = 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

私はこれを得る: ここに画像の説明を入力

4

2 に答える 2

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
于 2012-09-24T08:18:19.280 に答える
0

Just add dateofdays to your SELECT and GROUP BY. This will return just the days/hotels >=10

于 2012-09-24T07:53:48.233 に答える