現在、Java EEでウェブアプリケーションを作成しています。
機能のひとつとして、二つのテーブルから必要なデータを取得し、それぞれを複数条件にかけて、新しいデータとしてテーブルに登録出来ればと考えております。(マッチングのような感じです・・・)
例えば、
Aテーブル
a_id | a_date | a_starttime | a_endtime
Bテーブル
b_id | b_date | b_starttime | b_endtime | b_menunum | b_checknum
Cテーブル(条件にクリアしたものをここに登録したい)
c_id | c_date | a_id | b_id | b_starttime | b_endtime | b_menunum | b_checknum
各idはユーザに情報を持たせるためにテーブルに含んでいます。
各dateは一致するものだけを抽出。
各starttime,endtimeは時間の指定をしています。(例 12:00 ~ 14:00)
ここではa_starttime ~ a_endtimeの範囲内にb_starttime ~ b_endtimeが含まれている時に抽出したいと考えております。(A,Bそれぞれの時間の登録範囲は9:00 ~ 23:00までとしています)
自身でも調べてみたものの、joinやWHEREでの方法を読んでみましたが理解が難しく、また他の抽出方法もあるのかと思い、こちらで質問させていただきました。
よろしくお願いいたします。
長くなると思いますが、サンプルデータと期待する結果を下記に記入していきます。
A_table
240050 | 20170121 | 11:00 | 14:00
240055 | 20170121 | 10:00 | 13:00
240057 | 20170122 | 10:00 | 12:00
240062 | 20170122 | 15:00 | 18:00
B_table
150030 | 20170121 | 12:00 | 13:30 | b001,b002 | b01
150040 | 20170122 | 9:00 | 11:00 | b002,b004 | b01,b02
150050 | 20170122 | 16:00 | 17:00 | b001 | b03
C_tabele(登録に成功した時の期待値です)
c500001 | 20170121 | 240050 | 150030 | 12:00 | 13:30 | b001,b002 | b01
サンプルより、240050のデータと150030のデータを
a_date = b_date を基準に、a_starttime | a_endtime と b_starttime | b_endtime の比較を行い、マッチングさせ登録したものをC_tableに格納しています。