我正在尝试列出个别客人的家属。预订酒店时,客人可以带上朋友或孩子(家属)。但是,预订房间时,每间客房只能容纳 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 也是如此。