请多多包涵,因为我的 SQL 不太好。
我想编写一个查询,考虑来自 3 个不同表的信息。
让我解释一下情况:当客户预订一个房间时,他们有几个房间的偏好,并且房间可以在不同的日子预订(每天必须进行一个唯一的预订)在不同的时间。
我现在想编写一个查询来检查一天中的某个时间是否有房间可用。这些是我数据库中的表
房间
此表存储有关每个房间的信息
Fields:
id (primary key)
capacity
img
notes
building_id
roomstructure_id
lecturestyle_id
要求
此表存储有关每个请求的消息
Fields
id (primary key)
day_id
period_id
preference_id (foreign key from preference.id)
此表存储有关每个请求的信息。
偏爱
此表存储有关所有房间偏好的信息。
id (PK)
request_id (foreign key from request.id)
room_id (foreign key from room.id)
我希望我想要做的事情变得显而易见。
例如,如果我正在检查房间 C233 是否在星期一 09:00 被预订 - 我需要在房间表中查找房间信息,然后使用偏好表中的room_id来查找request_id。
一旦我获得了已链接到特定房间的request_id (在房间偏好表中),我就可以在请求表中查看 day_id=1 和 period_id=1 。如果 day_id=1 和 period_id=1 则表示房间是在星期一 09:00 预订的。
这意味着该房间不可用,因此不计算在内,但如果找不到该行,则将其计算在内。
这是迄今为止我编写的 SQL - 它非常简单,但它并没有完成我想要它做的所有事情:
SELECT COUNT(*) totalCount FROM ts_room
除此之外,我在另一个论坛上得到了建议——这里的代码。但它根本不起作用。我认为它不符合我的标准:
SELECT COUNT(*) totalCount
FROM room a
INNER JOIN preference b
ON a.id = b.room_id
INNER JOIN ts_request c
ON b.request_id = c.preference_id
WHERE c.day_id = 1 AND c.period_id = 1
提前致谢!