假设我有一个名为“Calls”的SQLite表,如下所示:
index_call start_datetime nextcall_datetime
--------------------------------------------------
1 2024-01-01 08:00AM 2024-01-01 08:24AM
2 2024-01-01 08:24AM 2024-01-01 08:35AM
3 2024-01-01 08:35AM 2024-01-01 08:45AM
还有一个名为“Event”的表,内容如下:
id_event id_datetime
------------------------------
1 2024-01-01 08:04AM
2 2024-01-01 08:12AM
3 2024-01-01 08:25AM
4 2024-01-01 08:30AM
现在需要查询在每次通话期间发生的事件,但如果同一时间段内有多个事件,只取最后一个发生的时间点。
我尝试了以下查询,但它生成了两个表之间的笛卡尔积。
SELECT
calls.index_call,
calls.start_datetime,
calls.nextcall_datetime,
event.id_datetime
FROM
calls AS calls
LEFT JOIN
event AS event
WHERE
event.id_datetime BETWEEN calls.start_datetime AND calls.nextcall_datetime
期望结果:
index_call start_datetime nextcall_datetime id_datetime
-----------------------------------------------------------------------
1 2024-01-01 08:00AM 2024-01-01 08:24AM 2024-01-01 08:12AM
2 2024-01-01 08:24AM 2024-01-01 08:35AM 2024-01-01 08:30AM
3 2024-01-01 08:35AM 2024-01-01 08:45AM