我一直在尝试为客户选择一个(最新的)条目(它将由WP插件sorta cron运行),我认为这将花费5分钟的时间。四小时后,我在这里,向您寻求帮助。
要可视化输出和问题:
SELECT * FROM `foc_program_partnerski_historia`
WHERE `data` >= SUBDATE('2019-06-30 00:01:00', INTERVAL 10 DAY)
AND `zmiana` NOT LIKE '-%'
ORDER by main_id, `data` DESC
我需要为每个客户找到最新的条目,最高的“ PO”编号*,并检查是否落入间隔内(inverval稍后将更改为“等于”,以准确地从10天前,30天前或365天前(取决于客户)。
这是我想看到的:
当我添加“ group by”子句时,它确实将其分组,是的,只是不是我想要的方式:
这也需要永远...
什么是正确的sql,您能帮我吗?
。
。
。
。
`
* Przed / zmiana / po
表示:
在/ change /之后
之前答案 0 :(得分:0)
从我看来,您需要GROUP BY main_id。 从类似的东西开始
SELECT main_id, max(data) AS data, max(przed) AS przed, min(po) AS po
FROM `foc_program_partnerski_historia`
WHERE `data` >= SUBDATE('2019-06-30 00:01:00', INTERVAL 10 DAY)
AND `zmiana` NOT LIKE '-%'
GROUP BY main_id
ORDER BY main_id
然后您可以像这样加入:
SELECT *
FROM `foc_program_partnerski_historia` A
LEFT JOIN (
SELECT main_id, max(data) AS data, max(przed) AS przed, min(po) AS po
FROM `foc_program_partnerski_historia`
WHERE `data` >= SUBDATE('2019-06-30 00:01:00', INTERVAL 10 DAY)
AND `zmiana` NOT LIKE '-%'
GROUP BY main_id
) B
ON A.main_id = B.main_id AND A.przed=B.po -- OR A.data<>B.data
ORDER BY A.main_id
并且我使用的是max(data)而不是根据您突出显示的内容进行przed,尽管在这种情况下,两者看起来都可以得到结果 。