0

ts_allocation というテーブルの値をチェックして、一致する部屋が「割り当てられている」かどうかを確認する SQL クエリがあります (二次条件)。それらが「割り当てられている」場合、結果には返されません。残念ながら、設計上の制約により、この条件をテーブルに含めることはできなくなりました。

部屋に「保留中」、「失敗」、または「拒否」以外の値があるかどうかを確認するように変更したいと思います。3 つのいずれかの場合、結果が返され、(以前とは異なり) 無視されません。

部屋が最初の where 句で取得されると、システムは ts_allocation テーブルでそれらが「保留」、「失敗」、または「拒否」されているかどうかを確認する必要があります。部屋は特定の日または期間で予約できますが、ステータスが「保留中」、「失敗」、または「拒否」のままの場合は、表示されます。それ以外の場合は、部屋が予約されていることを意味します。

ここで意味を成していることを願っています...これまでの私のコードは次のとおりです。

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)
4

1 に答える 1

1

クエリの結果として部屋の鍵を戻したいと思います...

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'))
于 2013-02-19T02:43:56.777 に答える