2016-06-25 2 views
0

テーブル1とテーブル2をとり、次のプロパティを持つテーブル3を生成するSELECTステートメントを探しています。表1の各イベントにはタイム・スタンプがあります。前に開始して終了したテーブル2のすべてのトランザクションを検索します。

表1:event_id | customer_id |タイムスタンプ 表2:transaction_id | time_started |表3:顧客ごとに、顧客が表1で説明したイベントを実行したときにアクティブだったすべてのトランザクションを指定します。トランザクションは、イベントの前に開始され、その後に終了するとアクティブと見なされます。表3の形式:

customer_id | time_finishedが実際に別のテーブルに格納されている(表4)以下のように:

UPD TRANSACTION_ID

EVENT_CODEを| transaction_id |タイムスタンプ

ここで、event_code = "finished"は、 "finish"イベントに対応します。

+1

あなたの試行されたコードをtable4.transaction_idに等しいですか? – Parfait

+0

したがって、table2のtime_finishedは何をしますか? – Strawberry

+0

テーブル2にtime_finishedはありません –

答えて

1
select t1.customer_id, t2.transaction_id 
    from table1 t1 join table2 t2 
    on t1.timestamp between t2.time_started and t2.time_finished 

編集:新しいテーブル私はtable2.transaction_idを推測しているが

select t1.customer_id, t2.transaction_id 
     from table1 t1 join table2 t2 
     on t1.timestamp >= t2.time_started 
     join table4 t4 on t2.transaction_id = t4.transaction_id 
     and t1.timestamp <= t4.timestamp 
     and t4.event_code = 'finished' 
+0

多くのおかげで@vercelli!私は、time_finishedが別のテーブル(表4)に次のように格納されていることを認識しました。event_code | transaction_id |タイムスタンプ。 event_code = "finished"は、 "finish"イベントに対応します。コードをどのように変更すればよいですか? –

関連する問題