Привет! Я пытаюсь получить список заказов с заказанными продуктами, адресами клиентов и выбранным перевозчиком.
Мне удалось заставить это работать, но когда клиенты купили более одного продукта, я получаю строки для каждого продукта, купленного следующим образом!
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) и как на прикрепленном изображении. Как я могу заставить их на новые строки? Товарный номер продукции