请忍受我,因为我的SQL不太好。跨越三张表的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
在此先感谢!
查询未选择特定房间(例如C233),但总体结构似乎正确。当你说它不在al工作时,你的意思是什么? – 2013-02-15 20:20:52
@Darius,为什么查询不选择特定的房间?我正在与这个项目的奥马尔 - 我们已经测试了代码,并注意到返回 – methuselah 2013-02-15 20:49:59
所以你的意思是返回0,或返回NULL,或....?它应该返回一个整数,即使没有找到适合您的条件的房间 – Melanie 2013-02-15 22:09:09