Выборка: товары и заказы

hammet

Новичок
Выборка: товары и заказы

Есть 3 таблицы:

order(id, ...)
product(id, title, ...)
product_order(order_id, product_id, quantity)

В одном заказе может быть сразу несколько продуктов, что логично.
Нужно одним запросом выбрать ряд заказов, и по каждому заказу наименования (title) продуктов в виде одной строки (скажем, объединить запятыми).
То есть, результат будет прибл. таким:

order_id products
1 prod1, prod2, prod3
2 prod4
3 prod5, prod6

Подскажите, как это сделать, буду признателен.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
hammet
ты как-нибудь пытался это сделать сам?
 

hammet

Новичок
да, но ничего не вышло.
Вот так можно подсчитать кол-во товаров в каждом заказе

SELECT o.id as order_id, COUNT(p.id) as items_count, po.quantity
from `order` o
LEFT JOIN `product_order` AS `po` ON po.order_id=o.id
LEFT JOIN `product` AS `p` ON p.id=po.product_id
GROUP BY o.id

только бы вот этот каунт заменить на строку с названиями...
Может я туплю нереально и тут всё на ладони? Ткните носом, если так..

-~{}~ 26.03.10 18:43:

Нашел чудо функцию GROUP_CONCAT()

SELECT o.id as order_id, GROUP_CONCAT(p.title), po.quantity
from `order` o
LEFT JOIN `product_order` AS `po` ON po.order_id=o.id
LEFT JOIN `product` AS `p` ON p.id=po.product_id

-~{}~ 26.03.10 18:45:

GROUP BY o.id
 

LONGMAN

Dark Side of the Moon..
Похожая задача :) Только мне нужно подсчитать суммарную стоймость ордера. Но не выходит никак..
 
Сверху