我正在试着建立一个简单的预订系统。
我有两张表,分别是room_typesrooms。在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/

10-11 16:40