0
我有一個SQL查詢,它檢查名爲ts_allocation的表中的值以查看已分配的匹配空間(輔助條件)。如果他們是「分配」,那麼它不會返回結果。不幸的是,由於設計上的限制,我不能在我的桌子上有這種情況了。將SQL查詢從一個條件更改爲幾個
我現在想改變它,以便它看到房間的值是否等於「待定」,「失敗」或「拒絕」。如果是三者中的任何一個,那麼結果將被返回並且不被忽略(不像以前)。
一旦在第一個where子句中獲取了房間,系統需要檢查它們在ts_allocation表中是否爲「Pending」,「Failed」或「Declined」。一個房間可以預訂一定的日期或時間 - 但如果它的狀態仍然是「待定」,「失敗」或「拒絕」,則可以查看它。其他任何事情都意味着房間被預訂了。
我希望我做的意義在這裏......這裏是我到目前爲止的代碼:
SELECT
COUNT(*) totalCount
FROM
ts_room rm
WHERE building_id=:building_id AND
NOT EXISTS (
SELECT 1
FROM ts_roompref rp
JOIN ts_request rq
ON rp.request_id = rq.id
AND day_id = 4
AND period_id = ".$i."
WHERE
rm.id = rp.room_id)
AND NOT EXISTS (
SELECT 1
FROM ts_roompref rp
JOIN ts_allocation a
ON rp.request_id = a.request_id
AND a.status = 'Allocated'
WHERE
rm.id = rp.room_id)
至少提供'ts_room','ts_roompref'和'ts_allocation'表的關鍵列表列表 – Tahbaza 2013-02-19 02:05:50
http://sqlfiddle.com/#!2/e1021/6 – methuselah 2013-02-19 02:15:46