2010-04-17 38 views
0

我有以下兩個表的結果...MySQL的 - 分組基於一個數學運算和SUM()函數

表:room_type

type_id type_name no_of_rooms  max_guests rate  
    1   Type 1   15    2  1254  
    2   Type 2   10    1  3025 

表:預訂

reservation_id start_date end_date room_type booked_rooms  
     1  2010-04-12 2010-04-15  1   8 
     2  2010-04-12 2010-04-15  1   2 

現在......我有這個疑問

SELECT type_id, type_name 
FROM room_type 
WHERE id NOT IN (SELECT room_type 
      FROM reservation 
      WHERE start_date >= '$start_date' 
      AND end_date <= '$end_date') 

查詢所做的是選擇未在開始日期和結束日期之間預訂的房間。

此外,你可以從預留表看,我們也有因素也房間的兩個日期之間的預約號'......

我需要添加此「節數訂了房間之間兩個日期的因素也在查詢中...

查詢應該返回兩個日期之間至少有一個房間空閒的房間類型。

我制定了邏輯,但不能代表它作爲查詢....!你會怎麼做...?

感謝您的建議..!

回答

1

你的結果可能在這個

SELECT a.type_id, a.type_name, a.no_of_rooms, (

SELECT SUM(booked_rooms) 
FROM reservation 
WHERE room_type = a.type_id 
AND start_date >= '2010-04-12' 
AND end_date <= '2010-04-15' 
) AS booked_rooms, (
a.no_of_rooms - (
SELECT SUM(booked_rooms) 
FROM reservation 
WHERE room_type = a.type_id 
AND start_date >= '2010-04-12' 
AND end_date <= '2010-04-15') 
) AS freerooms 
FROM room_type AS a 
LEFT JOIN reservation AS b ON a.type_id = b.room_type 
GROUP BY a.type_id 
ORDER BY a.type_id 
來了