MySQL - возвращение нескольких строк с одинаковым идентификатором заказа - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь получить данные по следующему запросу:

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"

Приведенный выше запрос возвращает действительные данные, но я хотел бы превратить их в одну строку для определенного заказа.В настоящий момент, я полагаю, что из-за нескольких записей, созданных в de_order_history одного и того же id_order,

я получаю ниже:

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».Я тоже озадачен этим вопросом.

Есть ли способ, которым я могу достичь своей цели?

Спасибо.

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте с group by в вашем резюме?

С уважением

...