2011-09-01 156 views
0

我在嘗試組合兩個查詢的結果。我不擅長mysql,所以我在這裏尋求幫助。在mySQL中組合兩個查詢

第一個查詢如下:

select count(roomtypeid) as bookedrooms, day 
from event_guest_hotel 
where hotelid = 1 and roomtypeid = 1 
group by day; 

這將返回:

firstquery

第二個查詢:

SELECT ehr.reservationid, ehr.day, h.name AS hotelname, 
ehr.totalrooms as requested_rooms, r.name AS roomname 
      FROM event_hotel_reservation ehr 
      INNER JOIN hotel_room_type r 
      ON ehr.roomtypeid = r.roomtypeid 
      INNER JOIN hotel h 
      ON ehr.hotelid = h.hotelid 
      WHERE totalRooms != 0 
      AND reservationID = '1' 

這將返回:

seconquery

我可以將第一個查詢與第二個查詢結合起來,因此我可以在'roomname'旁邊的另一個結果列中得到第一個查詢的結果?這樣我就知道已經預訂了多少間客房,以及最初從一個查詢中請求了多少間客房。

+0

你的意思是另一列或另一臺? – VitaminP

+0

對不起,我的意思是專欄。 – cabaret

回答

1

嘗試:

SELECT ehr.reservationid, ehr.day, h.name AS hotelname, 
    ehr.totalrooms as requested_rooms, r.name AS roomname, 
    egh.bookedrooms 
FROM event_hotel_reservation ehr 
INNER JOIN hotel_room_type r ON ehr.roomtypeid = r.roomtypeid 
INNER JOIN hotel h ON ehr.hotelid = h.hotelid  
left outer join (
    select hotelid, count(roomtypeid) as bookedrooms, day 
    from event_guest_hotel 
    where roomtypeid = 1 
    group by hotelid, day 
) egh on h.hotelid = egh.hotelid and ehr.day = egh.day 
WHERE totalRooms != 0 
    AND reservationID = '1' 
+0

謝謝。一開始看,這確實是我正在尋找的。我現在就試着用這個查詢來試試看,因爲我現在做的確實對我來說有點模糊; D複雜的應用程序:( – cabaret

+0

嗯。有沒有辦法在其他日子裏顯示預訂房間爲0?只顯示第25 atm。謝謝 – cabaret

+0

你會想在(select ...)上進行左外連接而不是內連接。請參閱維基百科有關外連接的文章以瞭解它們是如何工作的: http:// en。 wikipedia.org/wiki/Join_%28SQL%29#Outer_joins – VitaminP