id_role,
title,
right_to_view,
right_ping,
right_edit,
right_admin,
---right_creator,
(
SELECT
Count(warnings.id)
FROM
warnings
JOIN members
ON warnings.id_member = members.id
JOIN members_in_group
ON members.id = members_in_group.id_member
JOIN groups
ON members_in_group.id_group = groups.id
JOIN projects
ON groups.id_project = projects.id
WHERE
projects.id = ?
) as number_of_warning
FROM
members
JOIN members_in_group
ON members.id = members_in_group.id_member
JOIN roles
ON roles.id = members_in_group.id_role
WHERE
id_group = ?
GROUP BY members.id;
достаю данные по пользователям группы.
с их ролями и количеством варнов,
варны считаются по всему проекту.
но данный запрос не работает
так как роли у пользователя в разных группах разные.
то есть без
этих параметров запрос работает
id_role,
title,
right_to_view,
right_ping,
right_edit,
right_admin,
ERROR: ОШИБКА: столбец "members_in_group.id_role" должен фигурировать в предложении GROUP BY или использоваться в агрегатной функции
LINE 7: id_role,
подскажите как исправить?
GROUP BY - сгруппировать по полю/полям а в селекте у тебя еще много полей, sql не понимает что сними делать. вариантов два: 1. добавлять поля в группировку 2. юзать агрегатные функции типа min, max, sum для неучаствующих в группировке полей
в этом и проблема - если добавить в группировку - там будет разделение из за разных ролей в разных группах. а использовать разные функции не вижу смысла. пойду поищу как объединить два запроса.
Обсуждают сегодня