私は2つのテーブルを持っています.1つはオープニング用、もう1つは予約用です。予約テーブルのエントリは常に開口部を参照し、各開口部に複数の予約がある可能性があります。私はbookingType 'C'
とは異なる予約をしているすべての開口部を抽出したいと思います。SQLクエリ - どこが間違っていますか?
など。結果に
次
開口がタイプA、B及びCの3つの予約を持っている場合、それは を示さないべきでは
開口がタイプAおよびBののみの予約を持っている場合、それが表示されるはず 結果における最大
は、私が試したものですが、それは例1で失敗したとして、それは正しくありません。
ここでselect op.id, bo.id
from opening op
left join booking bo on bo.openingId = op.id
where bo.bookingType != 'C';
は、完全なクエリは、時間間隔を参照している:
select op.id, bo.id
from opening op
left join booking bo on bo.openingId = op.id
where ((bo.arrivalDate < '2009/06/20' AND bo.departureDate <= '2009/06/20') OR
(bo.arrivalDate >= '2009/06/27' AND bo.departureDate > '2009/06/27'))
私はbookingType
は、実際には2つの列arrivalDate
とdepartureDate
によって定義された時間間隔だった呼び出すために使用したもの:私はすべての必要とする上記の例では、 20th June 2009
と27th June 2009
の間に予約がありません。日付変更と
:
と、この:次のように - あなたは左反半にも参加を使用することができますか?宿題のようにも聞こえます。 –
TABLE開口 IDのINT NULL NOT 説明VARCHAR(60) PRIMARY KEY(ID)、NOT NULL 表予約 IDのINT、 openingId INT NOT NULL、 arrivalDate DATETIME NULL NOT、 departureDate DATETIME NOT NULL、 PRIMARY KEY(id) 特定の日付間隔(例えば、20-06-2009から27-06-2009まで)で利用可能なすべてのオープニングを抽出しようとしています –
上記の例のbookingTypeはどこですか? – akf