我有一个问题,结合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
我需要知道什么是最近的过去日期和下一个最近的未来日期,如:
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查询?
编辑
我改变了我的查询迈克答案:
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
我知道:)。非常感谢您的帮助!现在是完美的。 –