我正在努力建立一个简单的预订系统。
我有两个表room_types
和rooms
。在rooms
中,我有一个布尔字段,显示该房间是否可用。我想列出房间类型,其中至少有一个房间可用于该类型。我知道我需要使用join和count,但我无法整理整个查询。任何帮助表示赞赏。
我的架构(修剪了不必要的字段):
room_types [id, name(varchar), size(int), price(float) ...]
rooms [no (int), type (int) (foreign key room_types(id)), available (bool), ...]
答案 0 :(得分:2)
select room_types.id from room_types
inner join rooms on rooms.room_type = room_types.id and rooms.available = 1
group by room_types.id
这个概念就在那里,但由于我不知道你的架构,所以我无法完全编写查询。我希望你能从中了解到你需要的东西并将其应用到你自己的架构中。
select room_types.id, COUNT(rooms.id) from room_types
left outer join rooms on rooms.room_type = room_types.id and rooms.available = 1
group by room_types.id
order by COUNT(rooms.id) desc
计算(包括可能有房间的房间类型)。
答案 1 :(得分:0)
试试这个:
SELECT a.id,
a.Name,
COUNT(b.id) AvailableRooms
FROM room_types a LEFT JOIN rooms b
ON b.room_type = a.id
WHERE b.available = 1
GROUP BY a.id
ORDER BY AvailableRooms DESC