MySQL - группа BY 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?

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

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

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

Благодарю.

2 ответа

Я не пользователь MySQL, но измените вашу группу на

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

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

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

в вашей группе по предложению. Это будет хорошо работать тогда.

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

Другие вопросы по тегам