我的 SQL 查询再次出现问题...
D.0.02 已分配给第 1 天的第 1 期,所以它应该算 0。但它没有分配给第 1 天的第 2 期。为什么它返回为 0?
SELECT COUNT(DISTINCT rm.Id)
FROM ts_room rm LEFT JOIN ts_roompref rp ON rp.room_id = rm.id
LEFT JOIN ts_request rq ON rq.id = rp.request_id
LEFT JOIN ts_allocation a ON a.request_id = rq.id
WHERE room_id = "D.0.02"
AND (a.status IS NULL OR a.status IN ('Pending', 'Failed', 'Declined'))
AND (day_id=1 AND period_id=2)
这是我的小提琴:http ://sqlfiddle.com/#!2/5e1de/13
如果状态不是 Pending、Failed、Declined,则忽略该房间,但它可以在其他期间或几天内免费但未预订 - 如果未预订,则未分配 - 这意味着 day_id 和 period_id 将不存在,但房间仍然可以免费预订。
看来我需要重新输入我的 SQL 查询。关于如何做的任何建议?