Mysql 省略某些值的SQL查询
我正在尝试返回在ts_分配表中不存在的所有房间,即尚未分配或在ts_分配表中处于挂起、失败或拒绝状态的房间。这些房间可以满足其中一项条款 但省略了一些值,如D.0.02。请参考FIDLE?为什么会这样?它存在于上述状态的ts_分配中,但似乎不符合某一条款。我如何解决这个问题 这是我的小提琴:Mysql 省略某些值的SQL查询,mysql,Mysql,我正在尝试返回在ts_分配表中不存在的所有房间,即尚未分配或在ts_分配表中处于挂起、失败或拒绝状态的房间。这些房间可以满足其中一项条款 但省略了一些值,如D.0.02。请参考FIDLE?为什么会这样?它存在于上述状态的ts_分配中,但似乎不符合某一条款。我如何解决这个问题 这是我的小提琴: x、 id为null将为您提供所有尚未分配的房间,或部分将为您提供更多结果-那些状态为挂起、拒绝或失败的房间。请将您的问题简化为相关部分,并不仅仅在FIDLE中发布这些详细信息。重复:,不要多次发布同一查询
x、 id为null将为您提供所有尚未分配的房间,或部分将为您提供更多结果-那些状态为挂起、拒绝或失败的房间。请将您的问题简化为相关部分,并不仅仅在FIDLE中发布这些详细信息。重复:,不要多次发布同一查询
SELECT
*
FROM
ts_room rm
WHERE
NOT EXISTS (
SELECT 1
FROM ts_roompref rp
JOIN ts_request rq
ON rp.request_id = rq.id
AND day_id = 1
AND period_id = 1
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 <> 'Pending'
AND a.status <> 'Failed'
AND a.status <> 'Declined'
WHERE
rm.id = rp.room_id)
SELECT rm.*
FROM ts_room rm
LEFT JOIN (
SELECT a.*, rp.room_id
FROM ts_roompref rp
INNER JOIN dbo.ts_allocation a on a.request_id = rp.request_id) x
ON x.room_id = rm.id
WHERE x.id is null
or (x.id is not null and x.status in ('Pending', 'Failed','Declined'))