Я искал в нескольких темах, как решить эту проблему, возникшую у меня с запросом, который использует CONCAT, но все же должен возвращать группы, даже если concat равен нулю, и я нашел 2 решения, которые не работают.
Первым решением было использование ISNULL:
#1582 - Incorrect parameter count in the call to native function 'ISNULL'
Вторым было использование IFNULL, который работает частично, он находит не нулевые, но все же не печатает нулевые.
Здесьэто запрос:
SELECT g.name, IFNULL(GROUP_CONCAT(c.name),'') AS commands
FROM site_access b
JOIN groups g ON b.group_id = g.id
JOIN group_commands gc ON g.id = gc.group_id
JOIN commands c ON gc.command_id = c.id
WHERE b.site_id = 1
GROUP BY g.name
ORDER BY g.status ASC
У меня есть 8 site_access, 8 групп и в настоящее время зарегистрированы, и только 2 команды, которые назначены для группы 1 и группы 2, в настоящее время происходит то, что он печатает эти 2 группы, но игнорируетвсе остальные, потому что у них нет команд.
Вот пример вывода:
Admin - add, del, announce
Member - find
Желаемый вывод:
Admin - add, del, announce
Member - find
Banned
OhterGroup1
OhterGroup2
OhterGroup3
OhterGroup4
OhterGroup5
, если вам нужна дополнительная информация отаблицы, здесь есть пример этого: MySQL-запрос для нескольких таблиц, являющихся вторичными таблицами для нескольких элементов?