請忍受我,因爲我的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