クエリに一致しないデータのみを選択したい。
2 つのテーブルがあるとします。
車:
id int PRIMARY KEY IDENTITY
make varchar(255) NOT NULL
model varchar(255) NOT NULL
pricegroup varchar(1) NOT NULL
レンタル:
id int PRIMARY KEY IDENTITY
sdate date NOT NULL
edate date NOT NULL
car_id int NOT NULL
Rentals のsdateはレンタルの開始日です - edateは終了日です。
指定した期間内に利用可能なすべての車を検索したいと考えています。
このクエリはほとんど機能します。
SELECT * FROM cars WHERE id NOT IN
(SELECT car_id FROM rentals WHERE sdate <='2013-04-28' AND edate >='2013-04-30')
ただし、特定の日付でのみ機能します。2013 年4 月 25日から 2013 年 5 月 30 日までの期間を入力すると、その期間中に一部の車両が予約されていても、すべての車両が表示されます。
MS SQL 2012 を使用しています。