Room Booking Query

前端 未结 2 1522
伪装坚强ぢ
伪装坚强ぢ 2020-12-04 01:29

I have a problem in writing the sql to get the availables rooms from the tables.

My tables structures are given below.

Table Booking
ID | START_DATE         


        
2条回答
  •  不知归路
    2020-12-04 01:45

    You'll want to define a clear recordsets for "all bookings made on day X", and then use an outer join to retrieve those rooms that don't have a booking for said day.

    SET @myDate = #someDay#
    SELECT R.ID
    FROM Room R
    WHERE R.ID NOT IN (
        SELECT BR.ROOM_ID
        FROM BookingRoom BR
        INNER JOIN Booking B ON BR.Booking_ID = B.ID
        WHERE @myDate BETWEEN B.start_date and B.end_date
    )
    

    Edit:

    Since you want ALL open rooms during a reservation, you'll need to do a more complicated query. I'll assume that you already have the dates in question loaded outside, since doing a date-based many-to-many query is a PITA.

    SET @dateStart = #Start#
    SET @dateEnd = #End#
    
    SELECT R.ID
    FROM Room R
    WHERE R.ID NOT IN (
        SELECT BR.ROOM_ID
        FROM BookingRoom BR
        INNER JOIN Booking B ON BR.Booking_ID = B.ID
        WHERE B.start_date BETWEEN @dateStart AND @dateEnd
        AND B.end_date BETWEEN @dateStart AND @dateEnd
    )
    

提交回复
热议问题