【发布时间】:2021-04-24 15:26:13
【问题描述】:
我有这些表:
- MOTEL:汽车旅馆 ID (PK)、汽车旅馆名称、城镇
- ROOM:roomID (PK)、motelNo (PK)、类型、费用
- 预订:motelNo (PK)、guestID (PK)、dateFrom (PK)、dateTo、roomID
- GUEST:guestID (PK)、guestName、guestAddress
对于这个 SQL 数据库,我想回答两个问题:
- 选择所有名字为“John”且预订日期未定义的 guestID。不允许显式或隐式连接。
到目前为止,我已经使用显式连接来完成它,以了解如何避免使用连接。我不知道如何不对这个查询使用连接,所以这就是我首先寻求帮助的原因。
到目前为止我的代码:
SELECT GUEST.GUESTID
FROM GUEST
INNER JOIN BOOKING ON BOOKING.GUESTID = GUEST.GUESTID
WHERE BOOKING.DATETO IS NULL
AND GUEST.GUESTNAME = 'John%';
- 选择名为“Jollife”的汽车旅馆的所有房间的费用和房间 ID。如果房间已被占用(根据数据库),请说明房间占用者的 guestName。
所有日期的格式为 yyyymmdd。
到目前为止我的代码:
SELECT COST.PRICE, ROOM.ROOMID
FROM ROOM
INNER JOIN MOTEL ON MOTEL.MOTELID = ROOM.MOTELID
FULL OUTER JOIN BOOKING ON ROOM.MOTELID = BOOKING.MOTELID
我尝试通过基于 motelID 对“ROOM”和“MOTEL”进行内部连接,然后使用“BOOKING”进行完全外部连接来开始这个问题,以便可以检查“dateTo”。我不知道从这里去哪里。这是在 postgresql 中。
【问题讨论】:
标签: sql postgresql