我正在试着建立一个简单的预订系统。
我有两张表,分别是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), ...]
最佳答案
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
带计数功能(包括可能有可用房间的房间类型)。
关于mysql - MySQL连接并根据其值计算外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10610520/