2012-02-16 2 views
0

У меня есть таблица разных атрибутов, которую я хочу суммировать, а затем группирую их в строку JSON, чтобы упростить отправку по сети. Вот упрощенная таблица:Mysql group_concat с суммами тоже внутри

t1 
type amount 
'atr1' 10 
'atr2' 10 
'atr1' 17 
'atr3' 20 
'atr3' 4 

Я пытался что-то вроде

select concat('{', 
    group_concat(
     (select concat('"', type, '":', sum(amount)) from t1 group by type) 
    ), 
'}') 

, но не удалось.

Я хочу закончить с '{"atr1":27,"atr2":10,"atr3":24}'

ответ

1

Попробуйте этот запрос -

SELECT CONCAT('{', GROUP_CONCAT(c1), '}') FROM (
    SELECT CONCAT('"', type, '":', SUM(amount)) c1 FROM t1 GROUP BY type 
) t 
1

что-то вроде

select 
    group_concat(concat('"', type, '":', TheSum)) 
FROM 
    (
    SELECT SUM(amount) AS TheSum,type 
    FROM t1 
    GROUP BY type 
    ) T