2011-09-01 87 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