2013-05-11 4 views
1

У меня есть следующий запрос:MySQL - группы GROUP_CONCAT

SELECT 
    issue.`sequence` AS issue_sequence, 
    issue.`description` AS issue_description, 
    GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ') AS issue_category_name, 
    GROUP_CONCAT(DISTINCT(approach.`name`) SEPARATOR ', ') AS approach_name, 
    issue_approach.`issue_id` AS issue_approach_issue_id, 
    issue_approach.`approach_id` AS issue_approach_approach_id 
FROM 
    `approach` approach 
    INNER JOIN `issue_approach` issue_approach ON approach.`id` = issue_approach.`approach_id` 
    INNER JOIN `issue` issue ON issue_approach.`issue_id` = issue.`id` 
    INNER JOIN `project` project ON issue.`project` = project.`id` 
    INNER JOIN `tenant` tenant ON project.`tenant_id` = tenant.`id` 
    INNER JOIN `issue_category` issue_category ON project.`id` = issue_category.`project` 
    INNER JOIN `user` user ON tenant.`id` = user.`tenant_id` 
WHERE user.id = 1 AND project.id = 1 
GROUP BY issue_category_name 
ORDER BY issue_category.`name`, issue.`sequence` 

У меня возникли проблемы с этой линии:

GROUP BY issue_category_name 

Видимо, MySQL не может показаться Группе псевдонима по результату GROUP_CONCAT. Я действительно не специалист по SQL, но есть ли способ, которым я могу группировать результаты GROUP_CONCAT?

Примеры данных;

Категория: Сеть, сервера Issue Id: 1 Описание: Некоторое описание Подходов: Некоторые подходы для решения этой проблемы.

В принципе, вопрос может принадлежать одной или нескольким категориям. Я объединяю категории для каждой проблемы. То, что я хочу сделать, - это группировать результаты по конкатенации категорий. Так, например, групповые проблемы, категориями которых являются Network, Servers.

Спасибо.

+0

Что говорит сообщение об ошибке? –

+0

Что должен делать запрос? Можете ли вы либо описать словами, либо предоставить образцы данных и желаемый результат? –

+0

Это не имеет никакого смысла. Какова ваша цель? –

ответ

3

Im не пользователь MySQL, но изменить свою группу, чтобы

Group By GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ') 
2

Со ссылкой на SQL EXECUTION ORDER, причина, почему это не будет работать потому, что оператор выбора является последнее утверждение будет выполнена таким образом, что SQL движок не будет знать ваш псевдоним столбца при группировке записей, поскольку GROUP BY встречается перед SELECT. Так что, как предлагает Чарльз Бретана, положите

Group By GROUP_CONCAT(DISTINCT(issue_category.`name`) SEPARATOR ', ') 

в вашей группе по предложению. Тогда это сработает.

Надеюсь, это вам поможет.

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