我對 PostgreSQL 比較陌生。
我的問題是我有他們預訂的公寓,我需要選擇那些在給定范圍內可用(沒有預訂)的公寓。
Reservations 表有欄位 apartmentId(參考公寓表)、userId 和 dateReserved 是tstzrange。
出于這些目的,我正在執行此查詢:
SELECT * FROM apartments
JOIN appointments ON appointments.aparmentId = apartments.id
WHERE NOT(datesreserved && '[2020-12-15T15:00:00.000Z, 2020-12-17T16:00:00.000Z)');
但相反,我得到了過濾約會 - 那些不包含 value 的約會[2020-12-15T15:00:00.000Z, 2020-12-17T16:00:00.000Z)。
據我研究,有頂級 where 和內部級別,據我所知,這個查詢應該給我頂級結果 - 那些不包含所提供范圍的公寓。
在這種情況下,我的理解是否正確?
提前致謝,愿上帝保佑你!
uj5u.com熱心網友回復:
我認為你在這里不需要存在。實際上,您沒有“頂級”,這些表是對等的。
SELECT * FROM apartments WHERE NOT EXISTS (
SELECT 1 from appointments WHERE appointments.aparmentId = apartments.id and datesreserved && '[2020-12-15T15:00:00.000Z, 2020-12-17T16:00:00.000Z)'
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/343266.html
標籤:PostgreSQL 内部联接 where子句 日期范围
上一篇:如何使用ESQL/C顯示約束?
