個々のゲストの扶養家族をリストしようとしています。ホテルを予約する際、ゲストは友人や子供を同伴することができます(扶養家族)。ただし、部屋を予約する場合、各部屋に配置できるのは 3 人までです。したがって、ゲストが 4 人を連れてきた場合、2 人の扶養家族は部屋 102 に滞在し、他の 3 人は部屋 103 に滞在します。しかし、彼らは同じ予約の下にあり、予約 ID = 2002 とします。
SQL oracle クエリを実行して、特定の予約のすべての扶養家族を表示しようとしています。これが私が試みたもので、うまくいきます:
SELECT b.BOOKINGID,
b.GUESTID,
d.DEPENDANTID,
d.FORENAME AS firstname,
d.SURNAME AS lastname,
br.FLOORNO,
br.ROOMNO
FROM BOOKING b
LEFT JOIN BOOKINGDEPENDANT bd
ON b.BOOKINGID = bd.BOOKINGID
LEFT JOIN DEPENDANT d
ON d.DEPENDANTID = bd.DEPENDANTID
LEFT JOIN BOOKINGROOM br
ON b.BOOKINGID = br.BOOKINGID
WHERE b.BOOKINGID = &BOOKINGID;
上記のクエリで直面している問題は、すべての扶養家族を一覧表示できることですが、予約が複数の部屋に関連付けられている場合、それらを複数回一覧表示することです。
たとえば、予約 2002 は部屋 102 と 103 を使用します。したがって、103 に滞在する人を含むすべての扶養家族は 103 に関連付けられます。103 についても同様です。