Я советовался с похожими вопросами, но вопрос другой, так как я присоединился не только ко многим, но и ко многим.
Пользователь
+----+-------+---------------+
| id | first | department_id |
+----+-------+---------------+
| 1 | John | 1 |
| 2 | Jane | 2 |
+----+-------+---------------+
отдел
+----+------------+
| id | name |
+----+------------+
| 1 | purchasing |
| 2 | HR |
| 3 | marketing |
+----+------------+
роль
+----+----------+
| id | name |
+----+----------+
| 1 | admin |
| 2 | accounts |
| 3 | sales |
+----+----------+
USER_ROLE
+--------+----------+
| user_id | role_id |
+--------+----------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 2 |
| 2 | 3 |
+--------+----------+
SQL
SELECT user.first, GROUP_CONCAT(role.name), department.id AS 'department.id', department.name AS 'department.name'
FROM user
INNER JOIN department ON user.department_id
INNER JOIN user_role ON user.id = user_role.user_id
INNER JOIN role ON user_role.role_id = role.id
GROUP BY user.name;
1018 * Expectation *
John, "admin,accounts,sales", 1, purchasing
Jane, "accounts,sales", 2, HR
По сути, это объединение в 4 таблицы, со многими ко многим и 1 со многими с групповой функцией concat.
запрос выдает ошибку.
Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'department.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by