У меня следующий запрос: сценарий работы:Многопользовательский запрос MySQL имеет проблему
У меня есть три таблицы. Категории, Роли и Roles_to_categories.
roles_to_categories стол:
--id-- --role_id-- --category_id--
Роль в таблице ролей может быть связан с несколькими категориями в виде сводной таблицы с именем roles_to_categories
. Мне нужна роль, например admin
, чтобы получить все категории из таблицы categories
, которые привязаны к ней в таблице roles_to_categories
.
Работает нормально, но проблема в том, что агрегация входит в состав: GROUP_CONCAT()
. Я хочу просто получить список родительских категорий и включить их детей в отдельный столбец, используя GROUP_CONCAT()
. Моя проблема заключается в том, что GROUP_CONCAT()
, кажется, игнорирует таблицу поворота role_to_categories, когда она извлекает список дочерних элементов, что означает, что она включает в себя дочерние элементы определенной категории, которая НЕ ДОПУСКАЕТСЯ (я имею в виду, что нет записи в roles_to_categories
, чтобы связать ее роль)
Этот запрос:
select categories.name as cat_name, categories.id as cat_id,
roles.name as role_name, roles.id as role_id, roles_to_categories.id as cat_id, roles_to_categories.role_id as role_id,
roles_to_categories.category_id,
group_concat('name: ', categories2.name) as cat_children
FROM roles left join roles_to_categories on roles.id = roles_to_categories.role_id
left join categories on roles_to_categories.category_id = categories.id
left join categories as categories2 on categories2.parent_id = categories.id
WHERE roles.name = "admin";
он выбирает необходимые столбцы из всех трех таблиц, начиная с roles
то left joins
к roles_to_categories
, чтобы получить связанные с ним записи, а затем повторно left-joins
по категориям таблицы из roles_to_categories
для выбора категорий чьи идентификаторы существуют в выбранных записях и ...
Вам необходимо 'группе by' в необобщенных столбцов (то есть все, что в выберите, кроме 'group_concat') – StuartLC
Можете ли вы рассказать об этом? В качестве ответа. спасибо –