유효한 세그먼트에있는 시간이있는 이벤트를 반환하는 SQL 쿼리를 실행하는 방법을 알고 싶습니다.하위 쿼리 사이의 SQL
예를 들어, 나는 두 개의 테이블이,
이벤트
event_id event_time
0 134
1 434
2 4300
세그먼트
segment_type segment_start_time segment_end_time data1 100 130 data1 200 500 data1 700 8000 veto1 400 440 data2 150 450 data2 4000 5000 veto2 175 200
내가 ,112을 반환하는 쿼리를 원하는3210
나는
SELECT *
FROM event
WHERE
event.event_time > (SELECT segment.segment_start_time FROM segment)
AND
event.event_time < (SELECT segment.segment_end_time FROM segment)
같은 것을 생각하지만 이것은 단지 아무 것도 반환하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
내가 원하는 다음 단계는 이벤트 시간을 찾는 것입니다. 는 '데이터'세그먼트 시작 시간과 종료 시간 및 NOT 시간과 종료 시간
을 시작 그리고 마지막으로, 실제로 데이터 세그먼트 및 거부권 세그먼트의 두 가지 유형을 가지고 '거부권'세그먼트 사이
. 나는 시간이있는 사건들을 돌려주고 싶다. 는 'DATA1'세그먼트 사이
는 'veto1'세그먼트 사이에 시간 및 종료 시간과
NOT 시작 시간 및 종료 시간과
을 시작할 'DATA2'세그먼트 사이에 시간 및 종료 시간과시작
는 'veto2'세그먼트 사이에 위 내 예를 들어 테이블에서
그래서 시간과 종료 시간을 시작하지, 내가 원하는 출력이 될 것
event_id event_time
2 4300
다른 세그먼트가 겹치지 않습니까? '이벤트'또는 '세그먼트'에 더 많은 레코드가 있습니까? – MatBailie
어떤 데이터베이스와 버전을 사용하고 있습니까? –
세그먼트가 겹칠 수 있지만 '유형이 다른'세그먼트 만 - 아래 내 의견을 참조하십시오. 나는 SQlite를 사용하고있다. 3.7.13 – ShaunH