2016-06-25 15 views
0
gestartet wurden

Ich suche eine SELECT-Anweisung, die Tabellen 1 und 2 übernimmt und Tabelle 3 mit den folgenden Eigenschaften generiert.Jedes Ereignis in Tabelle 1 hat Zeitstempel. Finden Sie alle Transaktionen in Tabelle 2, die vor und nach

Tabelle 1: event_id | Kunden-ID | Zeitstempel Tabelle 2: transaction_id | time_started | time_finish

(Gewünscht) Tabelle 3: gibt für jeden Kunden alle Transaktionen an, die aktiv waren, als der Kunde ein in Tabelle 1 beschriebenes Ereignis ausführte. Die Transaktion gilt als aktiv, wenn sie vor einem Ereignis gestartet und danach beendet wurde. Das Format der Tabelle 3:

customer_id | TRANSACTION_ID

UPD: time_finished wird in einer anderen Tabelle (Tabelle 4) in der folgenden Art und Weise tatsächlich gespeichert:

EVENT_CODE | Transaktions-ID | timestamp

wobei event_code = "finished" entspricht dem Ereignis 'finish'.

+1

Wo ist Ihr versucht Code? – Parfait

+0

Was macht time_finished in table2? – Strawberry

+0

es gibt keine time_finished in table2 –

Antwort

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 

Edit: neue Tabelle ich table2.transaction_id raten bin gleich table4.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

Vielen Dank @vercelli! Ich habe gerade festgestellt, dass time_finished in einer anderen Tabelle (Tabelle 4) auf folgende Weise gespeichert ist: event_code | Transaktions-ID | Zeitstempel. event_code = "finished" entspricht dem Ereignis 'finish'. Wie soll ich dann den Code ändern? –