在mySQL中组合两个查询

时间:2011-09-01 15:01:17

标签: mysql join union

我正在尝试合并两个查询的结果。我对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”旁边的另一个结果列中得到第一个查询的结果吗?这样我知道已经预订了多少房间以及最初从一个查询中请求了多少房间。

1 个答案:

答案 0 :(得分: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'