1

簡単な予約システムを作ろうとしています。

、、の2つのテーブルがroom_typesありroomsます。にrooms、ブールフィールドがあり、その部屋が利用可能かどうかを示しています。部屋のタイプをリストしたいのですが、そのタイプに使用できる部屋が少なくとも1つあります。結合とカウントを使用する必要があることはわかっていますが、クエリ全体をまとめることができませんでした。どんな助けでも大歓迎です。

私のスキーマ(不要なフィールドをトリミング):

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 に答える