Я пытаюсь получить первую метку времени (в таблице_2), предшествующую и следующей за каждой датой (из таблицы_1), имеющей событие. Иногда это несколько секунд до и после, а иногда часы или дни.
Моя таблица_1 выглядит так:
|-------|------------------|-------------|
| id | date | events |
|-------|------------------|-------------|
| 4 |2020-04-11 3:44:20| call |
| 2 |2020-04-21 7:59:06| appointment |
| 1 |2020-04-17 1:14:32| appointment |
| 3 |2020-04-10 3:41:17| feedback |
|-------|------------------|-------------|
Таблица_2 выглядит так:
|------------------|-------------|
| date | events |
|------------------|-------------|
|2020-04-13 3:07:13| feedback |
|------------------|-------------|
|2020-04-12 5:42:04| feedback |
|------------------|-------------|
|2020-04-18 2:52:11| call |
|------------------|-------------|
|2020-04-21 8:14:27| appointment |
|------------------|-------------|
А это это результат, который я ищу:
|----------|------------------|---------------------|------------------|
| id | date | previous_date | next_date |
|----------|------------------|---------------------|------------------|
| 4 |2020-04-11 3:44:20| 2020-04-12 5:42:04 |2020-04-12 5:42:04|
|----------|------------------|---------------------|------------------|
| 2 |2020-04-21 7:59:06| 2020-04-18 2:52:11 |2020-04-21 8:14:27|
|----------|------------------|---------------------|------------------|
| 1 |2020-04-17 1:14:32| 2020-04-13 3:07:13 |2020-04-18 2:52:11|
|----------|------------------|---------------------|------------------|
| 3 |2020-04-13 3:02:17| 2020-04-12 5:42:04 |2020-04-13 3:07:13|
|----------|------------------|---------------------|------------------|
Любая помощь будет принята с благодарностью. Мой стол, конечно, намного больше этого.
Это то, с чем я играю, но безуспешно:
SELECT
t1.id,
t1.date,
(
SELECT MIN(t1.date)
FROM table_1 AS t1
WHERE t1.date > t2.date
AND t1.events = t2.events
) AS NextDate
FROM table_2 t2