Как в MYSQL реализовать объединение колонок и строк?

Есть таблица с заказами orders, например:
orderid, customer_data, time, sum

и есть таблица orders_items
itemid, orderid, name, price, count

orderid связывает orders и orders_items, как видно.
Как мне вывести все заказы из таблицы orders и то, что заказано из orders_items, т.е. чтобы вывелась полная информация

orderid, customer_data, time, sum, (name price count ) - последняя колонка объединенная.

Притом что в таблице orders_items может быть несколько строк с одним orderid. То есть нужно как то сконкатенировать их.

Как объединять данные из orders_items я понял, а как их привязывать к orders не пойму.

Вот так выводятся и объединяются данные с одним и тем же orderid из orders_items
SELECT orderid, group_concat( name, ';', cast(price as char), ';', cast(count as char), '|') FROM orders_items group by orderid
  • Вопрос задан
  • 3870 просмотров
Решения вопроса 1
Не имею возможности потестить. На мой взгляд, должно выйти что-то типа такого:

SELECT o.orderid, o.customer_data, o.time, o.sum, GROUP_CONCAT(CONCAT_WS(':', oi.name, oi.price, oi.count) SEPARATOR '|') as items 
FROM orders o
JOIN orders_items oi ON oi.orderid=o.orderid
GROUP BY o.orderid

Фокус в том, что мы делаем GROUP_CONCAT строки, которую возвращает CONCAT_WS. Ну и "+" для корерктной работы GROUP_CONCAT необходимо по какому-то полю делать GROUP BY.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы