私は2つのテーブルがあります。SQL - 2つのテーブル(特定の日付範囲/時間)を使用して、日付範囲内のレコードを取得します
表1:
Name, StartDate, EndDate
例:
Timmy, 9/12/17 08:00:00, 9/13/17 00:00:00
Timmy, 9/13/17 05:00:00, 9/13/17 07:00:00
を表2:
Name, StartHour, Data...
例:だから
Timmy, 9/13/17 06:00:00, Data1...
Timmy, 9/13/17 04:00:00, Data2...
Timmy, 9/13/17 07:00:00, Data3...
Timmy, 9/12/17 14:00:00, Data4...
、私は時間を開始し、表2にすべてのレコードを取得する必要がありますこれは、すべての名前のために行われる必要がある(これが複数存在することができ、表1に日付範囲内ではありませんT1/T2の名前が一致しています(T2のデータ列は異なります)。それは、右側に限定して、左側に包括的でなければならない。
だからこのクエリのために、私はそのが参加した場合、私は気にしない
Timmy, 9/13/17 04:00:00, Data2...
Timmy, 9/13/17 07:00:00, Data3... (Inclusive on end date)
を見てみたいです。私は余分な列を削除することができます。私は重複を見たくない。私はまた、私が(StartHour> = StartDateとStartHour < EndDate)でないかどうかチェックするところで問題を打ち続ける。だから、表2の各行/ startHourは、表1の名前と一致するすべての行に対してチェックする必要があります。私はそれに対処できません。サブクエリが必要だと思いますが、分かりません。
範囲内にあるかどうかを確認しますが、範囲内にある場合は除外したいので否定します(排他的)。
出力で示した2つのレコードは、実際にはTable1の開始日と終了日の間にあります。これら2つのレコードを削除したいのですか? – Vashi
@Vashi申し訳ありませんが、多分私は台無しにしました。最初のレコードは、表1の範囲の後に1を記録します。表1の範囲の前にあり、2を記録する。 2番目に返されたレコードは、T1レコード1の後とT1レコード2の後(終了日は含まれていません)ですので、T1 R2は07:00に終了し、返された結果2は07:00に開始します(終了日、だから大丈夫です)。 – Future44