2013-08-14 9 views
-1

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

Пусть говорят, у меня есть эти таблицы:

Таблица Заказы

id tax 
01 800 
02 255 

Таблица DetailOrders

id price itemName 
01 700 Book 
01 500 Umbrella 
01 100 Jacket 
02 1000 Piano 

В основном одна запись из одной таблицы Orders соответствует несколько записей в DetailOrders.

Есть Есть ли способ, чтобы написать SQL запрос, который возвращает что-то вроде этого:

id tax sum-price all-names 
01 800 1300 Book, Umbrella, Jacket 
02 255 1000 Piano 

Было бы просуммировать стоимость элементов с одинаковым идентификатором, и каким-то образом объединить имена элементов с одинаковым идентификатором ,

Может ли быть что-то подобное достигнуто?

+6

"Может что-то вроде этого достичь?" Да, возможно. Ваша очередь теперь: вы могли бы показать нам, что вы * пробовали * до сих пор? –

+1

Посмотрите на функцию 'group_concat()' – Barranka

ответ

1

Как о чем-то вроде

SELECT o.id, 
     o.tax, 
     sum(od.price) sum_price, 
     group_concat(itemName) all_names 
FROM Orders o INNER JOIN 
     DetailOrders do ON o.id = do.id 
GROUP BY o.id, 
     o.tax 

Посмотрите GROUP_CONCAT(expr)

Эта функция возвращает результирующую строку с каскадными, не NULL значений из группы. Он возвращает NULL, если нет значений, отличных от NULL.

0

Это не сложно:

select 
    o.id, o.tax, 
    sum(d.price), 
    group_concat(d.itemName) 
from 
    orders as o 
    inner join detailOrders as d on o.id = d.id 
group by 
    o.id 
Смежные вопросы