2017-05-01 12 views
0

私は2つのテーブルを持っています。実施例表1:範囲内のタイムスタンプを選択

ID  episode_id  episode_start  episode_end 
    ---------------------------------------------------- 
    1    1   1     2 
    1    2   4     5 
    1    3   96     105 
    1    4   110    114 
    2    1   1     4 
    2    2   13     24 

例えば表Iにtable1.episode_startとtable1.episode_end間= table2.timestampに基づいて2つのテーブルをマージしたい2

ID  timestamp  Other_info 
    -------------------------------- 
    1    1   111     
    1    2   142     
    1    3   114     
    1    4   112     
    1    5   116     
    1    6   123     
    2    1   145     
    2    2   156     
    2    3   154     

最終表は、表2のサブセットで、エピソードがあるタイムスタンプローのみである必要があります。

質問:これを行う方法?最も計算効率の良い方法は何ですか?

編集:私のテーブルはずっと長くなっています。

例えば、ID = 1のepisode_startは、エピソード12のエピソード開始ID = 1200と同じになります。そのため、単純にマージすることはできません。

EDIT:予想される出力:

ID  timestamp  Other_info 
    -------------------------------- 
    1    1   111     
    1    2   142        
    1    4   112     
    1    5   116        
    2    1   145     
    2    2   156     
    2    3   154 

のように。マージは基本的に、テーブルによって表2のフィルタのいくつかの並べ替えである1

+0

1と表2ははるかに長く、より多くのエピソードがある現実のテーブルでは、あなたの期待される出力 –

答えて

0
select table2.id, timestamp, other_info 
from table1 
left join table2 on table2.timestamp between table1.episode_start and table1.episode_end 
where table2.id = table1.id 

出力:

id   timestamp  Other_info 
--------------------------------------- 
1    1    111 
1    2    142 
1    4    112 
1    5    116 
2    1    145 
2    2    156 
2    3    154 
+0

を追加開始時刻と終了時刻は同じです。これはうまくいきません。 – Koot6133

+0

私は答えを更新しました - これはあなたが望むものですか? – Zulatin

+0

これは今より良く機能します!しかし、今私は重複した数の重複している!すべての行が行ごとにmax(episode_id)回繰り返されるようです。これは計算上劇的になります。 – Koot6133

関連する問題