Mysql 将SQL查询从一个条件更改为多个条件

Mysql 将SQL查询从一个条件更改为多个条件,mysql,Mysql,我有一个SQL查询,它检查一个名为ts_allocation的表中的值,以查看匹配的房间是否已“分配”(次要条件)。如果它们被“分配”,那么它不会在结果中返回它们。不幸的是,由于设计限制,我的表中不能再出现这种情况 现在我想更改它,以便它查看文件室的值是否大于“待定”、“失败”或“已拒绝”。如果是这三个选项中的任何一个,那么结果将被返回,并且不会被忽略(与以前不同) 在第一个where条款中获得房间后,系统需要检查ts_分配表中的房间是否为“待定”、“失败”或“拒绝”。可以预订某一天或某段时间的

我有一个SQL查询,它检查一个名为ts_allocation的表中的值,以查看匹配的房间是否已“分配”(次要条件)。如果它们被“分配”,那么它不会在结果中返回它们。不幸的是,由于设计限制,我的表中不能再出现这种情况

现在我想更改它,以便它查看文件室的值是否大于“待定”、“失败”或“已拒绝”。如果是这三个选项中的任何一个,那么结果将被返回,并且不会被忽略(与以前不同)

在第一个where条款中获得房间后,系统需要检查ts_分配表中的房间是否为“待定”、“失败”或“拒绝”。可以预订某一天或某段时间的房间,但如果其状态仍然为“待定”、“失败”或“已拒绝”,则会查看该房间。其他任何东西都意味着房间已经被预订了

我希望我在这里讲得有道理。。。以下是我目前的代码:

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)

我假设你想要回房间钥匙作为查询的结果

SELECT DISTINCT rm.Id as RoomId
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 building_id = :building_id
  AND (a.status IS NULL OR a.status IN ('Pending', 'Failed', 'Declined'))

至少提供
ts\u room
ts\u roompref
ts\u分配
表的关键列列表