Интересный вопрос по SQL
У меня есть такой запрос
Select oi.order_id,i.name,oi.price from items i, order_items oi where i.id=oi.item_id order by order_id
он выдает результат:
order_id...............name......price
1........................ru3.........20
1........................ru1.........10
2........................ru2.........55
2........................ru1.........10
3........................ru2.........55
Дело в том что задачя была поставлена неможко иначе, получить вот такой результат:
order_id..............."результат"
1........................"ru3 : 20, ru1 : 10"
2........................"ru2 : 55, ru1 : 10"
3........................"ru2 : 55"
Реально ли это? Таблицы я вложил в zip файл. Спасибо всем.
Какая СУБД? Если твоя СУБД поддерживает пользовательские функции, то напиши функцию которая по ИДшке тебе бы возвращала строку..имхо, самое правильное решение в таких случаях.
А чистым SQL-ем невозможно? Задача стоит в реализации на MySQL 4.1
Цитата: daniel20
А чистым SQL-ем невозможно? Задача стоит в реализации на MySQL 4.1
Select oi.order_id, GROUP_CONCAT(CONCAT(i.name, ' : ',oi.price)) as result from items i, order_items oi where i.id=oi.item_id group by oi.order_id order by order_id
Большое спасибо. Это то что нужно.
кстати, если столбцов на вывод много, лучше использовать не concat(), а concat_ws()