Mysql根据其值加入并计算外键

时间:2012-05-16 00:19:35

标签: mysql join count

我正在努力建立一个简单的预订系统。

我有两个表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), ...]

2 个答案:

答案 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