2016-06-25 1 views
0

표 1과 표 2를 취한 SELECT 문을 찾고 다음 특성으로 표 3을 생성합니다.테이블 1의 각 이벤트에는 시간 소인이 있습니다. 이전에 시작하여 완료된 표 2의 모든 트랜잭션을 찾으십시오.

표 1 : event_id | 고객 ID | 타임 스탬프 표 2 : transaction_id | time_started | 표 3 : 각 고객에 대해 고객이 표 1에 설명 된 이벤트를 수행 할 때 활성화 된 모든 트랜잭션을 지정합니다. 트랜잭션은 이벤트 전에 시작되어 그 후에 끝나면 활성화 된 것으로 간주됩니다. 표 3의 형식 :

customer_id | time_finished 실제로 다른 테이블에 저장된다 (표 4) 다음과 같은 방법으로 :

UPD TRANSACTION_ID

event_code을 | transaction_id | timestamp

여기서 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'이벤트에 해당합니다. 그런 다음 어떻게 코드를 수정해야합니까? –

관련 문제