Как я могу объединить эти дополнительные строки в запросе SQL - PullRequest
0 голосов
/ 19 марта 2020

Привет! Я пытаюсь получить список заказов с заказанными продуктами, адресами клиентов и выбранным перевозчиком.

Мне удалось заставить это работать, но когда клиенты купили более одного продукта, я получаю строки для каждого продукта, купленного следующим образом!

62118 Preparation in progress 830-080
62118 Preparation in progress 816-052
62118 Preparation in progress 816-050

Как объединить, чтобы продукты отображались в одной записи, а не отдельно? Может ли кто-нибудь помочь мне здесь?

SQL Запрос:

SELECT
d.id_order,    os.name AS Status,    d.product_reference,
d.product_price,    d.product_quantity,    d.product_weight,
o.date_upd AS Date,
CONCAT_WS(' ', g.firstname, g.lastname) AS Customer,
ad.company,    ad.address1,    ad.address2,
ad.postcode,    ad.city,    ste.name AS state,
cl.name AS country,    ad.other AS message,    ad.phone,
ad.phone_mobile,    carrier.name AS carrier,    gl.name AS group_name
FROM    ps_order_detail d
LEFT JOIN  ps_orders o  ON  (d.id_order = o.id_order)
LEFT JOIN  ps_customer g    ON    (o.id_customer = g.id_customer)
LEFT JOIN  ps_address ad    ON    (o.id_address_delivery = ad.id_address)
LEFT JOIN  ps_state ste     ON    (ste.id_state = ad.id_state)
LEFT JOIN  ps_country_lang cl   ON   (cl.id_country = ad.id_country)
LEFT JOIN  ps_carrier carrier   ON    (carrier.id_carrier = o.id_carrier)
LEFT JOIN  ps_group_lang gl     ON    (g.id_default_group = gl.id_group) 
            AND gl.name LIKE 'customer%'
LEFT JOIN  ps_order_state_lang os ON   (o.current_state = os.id_order_state)
WHERE o.current_state in (2,3)
AND (o.`date_add` > DATE_SUB(now(), INTERVAL 1 DAY));
ORDER BY  o.id_order DESC

Удалось получить эту работу Благодаря предложению O.Jones со следующим:

SELECT
d.id_order,
os.name AS Status,
GROUP_CONCAT( d.product_reference,'|',  d.product_quantity) as products_ordered, 
SUM(d.product_quantity*d.product_price) as order_total,
SUM(d.product_quantity) as products_qty,
SUM(d.product_weight) as products_weight,
o.date_upd AS Date,
CONCAT_WS(' ', g.firstname, g.lastname) AS Customer,
ad.company,
ad.address1,
ad.address2,
ad.postcode,
ad.city,
ste.name AS state,
cl.name AS country,
ad.other AS message,
ad.phone,
ad.phone_mobile,
carrier.name AS carrier,
gl.name AS group_name
FROM
ps_order_detail d
LEFT JOIN
ps_orders o ON (d.id_order = o.id_order)
LEFT JOIN
ps_customer g ON (o.id_customer = g.id_customer)
LEFT JOIN
ps_address ad ON   (     o.id_address_delivery = ad.id_address    )
LEFT JOIN
ps_state ste ON  (ste.id_state = ad.id_state)
LEFT JOIN
ps_country_lang cl ON (cl.id_country = ad.id_country) and cl.id_lang = 1
/* use specific lang */    
LEFT JOIN
ps_carrier carrier ON    ( carrier.id_carrier = o.id_carrier    )
LEFT JOIN
ps_group_lang gl ON    ( g.id_default_group = gl.id_group  ) AND gl.name LIKE 'customer%' and gl.id_lang=1
/* use specific lang */        
LEFT JOIN
ps_order_state_lang os ON ( o.current_state = os.id_order_state and os.id_lang=1    )
/* use specific lang */        

ГДЕ o.current_state в (2,3) И (o. date_add> DATE_SUB (now (), INTERVAL 1 DAY)) GROUP BY o.id_order ORDER BY o.id_order DES C

Это получает результат, который я ищу, но с действующими ссылками на товары, как это (62223 Идет подготовка 830-040 | 4,814-080 | 2) и как на прикрепленном изображении. Как я могу заставить их на новые строки? Товарный номер продукции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...