0

こんな問い合わせがあります

select * from Cars where 
car_id!=(Select car_id from reservation where reservation_date between '2013-05-13' and '2013-05-15')

その日付の間に何もない場合は car_id='' を取りたいのですが、機能していません。

4

2 に答える 2

2

最初に、これが適切な値を返しているかどうかを確認します

Select car_id 
   from reservation 
   where reservation_date 
   between '2013-05-13' and '2013-05-15'

これを試して:

select * 
from Cars 
where car_id
not in 
(
   Select car_id 
     from reservation 
     where reservation_date between '2013-05-13' and '2013-05-15'
)
于 2013-05-19T12:30:50.683 に答える
0

draxxxeus の回答に従って「not in」を使用すると機能しますが、大量のデータを取得すると、クエリが遅くなります。直感的ではありませんが、論理的に同等の答えを得るための方法は次のとおりです。

where car_id in 
(select car_id
from cars
except 
select car_id
from reservation
etc
)

データベースがその構文をサポートしている場合、「not in」を使用するよりも高速に実行されます。一部のデータベース、たとえば Oracle では、「except」の代わりに「minus」という単語を使用する必要があります。

于 2013-05-19T12:42:34.307 に答える