MySQL - 返回同一订单 ID 的多行

标签 mysql prestashop-1.7

我正在尝试使用以下查询检索数据:

SELECT DISTINCT
o.id_order AS ID,
c.name AS ID_Carrier,
sl.name AS Store_Location,
o.date_add AS Order_date,
CASE WHEN h.id_order_state='2' THEN h.date_add END AS PAYMENT_VALIDATED,
CASE WHEN h.id_order_state='3' THEN h.date_add END AS IN_PROGRESS,
CASE WHEN h.id_order_state='160' THEN h.date_add END AS AWAITING,
CASE WHEN h.id_order_state='161' THEN h.date_add END AS SHIPPED,
CASE WHEN h.id_order_state='162' THEN h.date_add END AS READY_TO_COLLECT,
CASE WHEN h.id_order_state='84' THEN h.date_add END AS COLLECTED
FROM de_order_history h
LEFT JOIN de_orders o ON (o.id_order=h.id_order)
LEFT JOIN de_carrier c ON (o.id_carrier=c.id_carrier)
LEFT JOIN de_clickandcollect fs ON (o.id_order = fs.id_order)
LEFT JOIN de_store s ON (fs.id_store=s.id_store)
LEFT JOIN de_store_lang sl ON (sl.id_store=s.id_store)
WHERE sl.name = "XXX"
AND o.date_add >=  "2019-02-12 00:00:01"
AND o.date_add <=  "2019-02-12 23:59:59"

上面的查询返回有效数据,但我想将其转换为特定订单的一行。目前,我相信由于在同一 id_order 的 de_order_history 中创建了多个记录,

我收到以下内容:

SQL ERROR

由于这些记录来自相同的 id_order,所以我想将其放入一行。

我尝试过以下方法:

MAX(CASE WHEN h.id_order_state='2' THEN h.date_add END) AS 01_PAYMENT_VALIDATED

不幸的是,Prestashop 1.7 由于“END”而返回错误。我也对这个问题感到困惑。

有什么方法可以实现我的目标吗?

谢谢。

最佳答案

尝试在请求中使用group by

问候

关于MySQL - 返回同一订单 ID 的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54661994/

相关文章:

prestashop-1.7 - 如何删除 prestashop 1.7 上的送货步骤?

Mysql order by 连接查询速度极慢

MySQL:选择线程和帖子,按最新事件排序

mysql - Prestashop 导出从 1.5 到 1.7

prestashop 1.7 新模块

svg - Prestashop 1.7 在 tpl 文件中包含内联 SVG

java - org.apache.openjpa.persistence.PersistenceException : null keys not allowed (OpenJPA)

php - 在备份后的给定时间段内检查数据库是否有任何新条目

java - 无法在 Java 中执行 "like"查询

php - 入门主题 Prestashop 1.7 为空白