У меня проблема с объединением SQL-запроса, который должен показывать мне ближайшую (предыдущую и следующую) дату от CURDATE()
.SQL-запрос для получения ближайшей предыдущей и следующей даты?
У меня есть таблица с клиентами и таблицы ведьмами событий
таблица с клиентами:
konto_odbiorcy | name
---------------+----------------
2 | Sony LTD
3 | Panasonic LTD
etc...
Это то, что у меня есть в таблице с событиями:
number | date
-------+-------------
2 | 2016-11-01
2 | 2016-11-06
2 | 2016-11-14
3 | 2016-11-02
3 | 2016-11-21
3 | 2016-11-26
I необходимо знать, какова последняя минута и следующая ближайшая будущая дата, например:
number | date past | date future
-------+-------------+-------------
2 | 2016-11-06 | 2016-11-14
3 | 2016-11-02 | 2016-11-21
Как вы видите, для number=3
показать мне 2016-11-21
не 2016-11-26
Когда я хочу показать прошлое ближайшую дату:
SELECT number, date AS past
FROM 3ce_event
WHERE date <= CURDATE()
для следующего события:
SELECT number, date AS future
FROM 3ce_event
WHERE date >= CURDATE()
теперь, как сравнить это два с таблицей моих клиентов в одном запросе SQL?
EDIT
Я изменил мой запрос Майк Ответ:
select
number, klienci_ax_all.nazwa, miasto,
max(case when date<=curdate() then date end) as date_past,
min(case when date>=curdate() then date end) as date_future
from 3ce_event
inner join klienci_ax_all on 3ce_event.number = klienci_ax_all.konto_odbiorcy
group by konto_odbiorcy
Выглядит очень хорошо, но у меня была проблема с моим клиентам таблицы (klienci_ax_all
). Если для одного или нескольких клиентов нет ничего в таблице 3ce_event
, у меня нет этого клиента как Null
date_past и Null
date_future.
Мне нужен полный список клиентов от klienci_ax_all
, тогда прошлые и будущие данные, если есть ... любая помощь?
Я отредактировал мое сообщение ... Можете ли вы проверить это? Я думаю, что я возился с опцией JOIN :( –
@ Triple_6 Измените 'INNER JOIN' на' RIGHT JOIN' – Mike
я это знаю :). Большое спасибо за помощь! Теперь это прекрасно. –