1

そのため、情報を検索するのに助けが必要です。部屋に空きがある部屋を探しています。前後のテーブルの写真を追加しました。それが十分な情報であることを願っています:)ここに画像の説明を入力

4

3 に答える 3

0

各部屋に何人いるのかを調べることから始めます。

SELECT door_nr
     , Count(*) As number_of_occupants
FROM   people
GROUP
    BY door_nr

次に、このクエリを使用して、rooms一致する値に基づいてテーブルに結合できdoor_nrます。

SELECT rooms.door_nr
     , rooms.space As capacity
     , room_usage.number_of_occupants
     , rooms.space - room_usage.number_of_occupants As free_space
FROM   rooms
 LEFT
  JOIN (
        SELECT door_nr
             , Count(*) As number_of_occupants
        FROM   people
        GROUP
            BY door_nr
       ) As room_usage
    ON room_usage.door_nr = rooms.door_nr
于 2013-11-13T13:09:42.120 に答える
0
SELECT Door_Nr, COUNT(*) FROM People GROUP BY Door_Nr

部屋の人数を教えてくれます。

(My)SQL の基本的な実用知識があれば、残りの部分を理解できるはずですか? それ以外の場合は、具体的な質問をしてください。

于 2013-11-13T13:09:49.760 に答える
0
select r.door_nr, 
       r.space - sum(p.name is not null) as free
from rooms r
left join people p on p.door_nr = r.door_nr
group by r.door_nr, r.space
having free > 0

SQLFiddle デモ

于 2013-11-13T13:09:55.493 に答える