【发布时间】:2018-04-09 08:45:59
【问题描述】:
我不知道如何组合以下查询
查询 1
SELECT hotel.country, time.year, time.month, COUNT(booking.room_id) as booked
FROM booking
LEFT JOIN room on room.room_id = booking.room_id
LEFT JOIN hotel on room.hotel_id = hotel.hotel_id
LEFT JOIN time on booking.time_id = time.time_id
GROUP BY hotel.country, time.year, time.month
ORDER by hotel.country, time.year, time.month
查询 2
SELECT hotel.country, time.year, time.month, COUNT(checkout.room_id) as checkedout
FROM checkout
LEFT JOIN room on room.room_id = checkout.room_id
LEFT JOIN hotel on room.hotel_id = hotel.hotel_id
LEFT JOIN time on checkout.time_id = time.time_id
GROUP BY hotel.country, time.year, time.month
ORDER BY hotel.country, time.year, time.month
我希望输出如下
国家、年份、月份、预订次数、结账次数、总和(预订+结账)
有什么建议吗?
【问题讨论】:
-
联合所有。聚合。
-
为什么是外连接?在
room_id或hotel_id或time_id为空的情况下是否存在预订和结账?这似乎没有多大意义。 -
找工会???
-
由于
booking指的是某个time,我推测这是预订的时间,而不是预订的时间(因为那将是一个时间范围 代替)。正确的?因此,我们可能会找到有预订但没有结账的月份,以及有结账但没有预订的月份。是吗?