2012-07-01 4 views
0

Можно ли использовать group by из нескольких столбцов?группа по той же таблице

Вот members стол:

Id | CateogryId | Value 
1 | 1   | 10 
2 | 2   | 20 
1 | 1   | 10 

В настоящее время я могу вернуть (A,B) с помощью:

(SELECT GROUP_CONCAT(DISTINCT members.Category) 
    FROM members 
    JOIN categories on members.CategoryId = category.Id 
     ) as "Categories" 

Но я также хочу, общее рядом с каждой из категории, пример (A:20, B:20)

+0

Вы пробовали? –

+0

Я не уверен в синтаксисе. Я ищу group_concat из нескольких столбцов, включая подведение итогов для одного из столбцов. – Dani

+0

Я думаю, что лучший вопрос заключается в том, как вернуть одну строку, когда следующее: SELECT CONCAT (СУММ (AMOUNT), '', 'cateogry'.Name) возвращает две строки или более – Dani

ответ

1

Начинаем с виртуальной таблицы (подзапроса) с категорией Всего:

SELECT m.Category, SUM(m.Value) as Total 
    FROM members m 
GROUP BY m.Category 
ORDER BY m.Category 

Затем сделайте свой concat так, используя ваш виртуальный стол.

SELECT GROUP_CONCAT(CONCAT(Category, ': ', Total) SEPARATOR ' ') 
    FROM (
    SELECT m.Category, SUM(m.Value) as Total 
     FROM members m 
    GROUP BY m.Category 
    ORDER BY m.Category 
)A 
+0

виртуальной таблицы, которую я искал. – Dani

+0

можно добавить предложение where из внешнего select: SELECT network.name, SELECT GROUP_CONCAT (CONCAT (категория, ':', Total) SEPARATOR '') FROM ( SELECT m.Category, SUM (m.Value) as Всего От членов m, где category.netowrk = networks.Id ГРУППА по m.Категория ЗАКАЗАТЬ по m.Category ) A из сетей. В настоящее время я получаю сообщение об ошибке, что network.Id не существует – Dani

Смежные вопросы