1

我正在尝试制作一个简单的预订系统。

我有两个表作为room_types, 和rooms。在rooms中,我有一个布尔字段,显示该房间是否可用。我想列出房间类型,至少有一个房间可供该类型使用。我知道我需要使用连接和计数,但我无法将整个查询放在一起。任何帮助表示赞赏。

我的架构(修剪了不必要的字段):

room_types [id, name(varchar), size(int), price(float) ...]
rooms [no (int), type (int) (foreign key room_types(id)), available (bool), ...]
4

2 回答 2

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

计数(包括可能有可用房间的房间类型)。

于 2012-05-16T00:23:39.250 回答
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
于 2012-05-16T01:07:42.073 回答