Этот запрос выбирает следующее:
SELECT jobs.JobID, school.School_Name,
CONCAT(staff.First_Name, ' ', staff.Last_Name) AS 'Full_Name',
staff.Phone_Number, role.Role
FROM jobs
INNER JOIN school ON jobs.SchoolID=school.SchoolID
INNER JOIN staff ON jobs.StaffID=staff.staffID
INNER JOIN role ON jobs.roleID=role.roleID
ORDER BY staff.StaffID asc
JOB ID FULL NAME ROLE
------ --------- ----------
1 BOB PRINCIPLE
2 BOB TEACHER
3 JACK TEACHER
4 SARAH ACCOUNTANT
5 SARAH NURSE
ROLE ID ROLE
------ ----------
1 TEACHER
2 PRINCIPLE
4 ACCOUNTANT
5 NURSE
Однако я хочу, чтобы результаты играли только роль с наибольшим RoleID:
BOB PRINCIPLE
JACK TEACHER
SARAH NURSE
Я знаю, что могу объединить это в группы с помощью следующего, но что мне делать потом?
SELECT Full_Name, GROUP_CONCAT(Role) AS Role
FROM
(
SELECT jobs.JobID, school.School_Name, CONCAT(staff.First_Name, ' ', staff.Last_Name)
AS Full_Name, staff.Phone_Number, role.Role
FROM jobs
INNER JOIN school ON jobs.SchoolID=school.SchoolID
INNER JOIN staff ON jobs.StaffID=staff.staffID
INNER JOIN role ON jobs.roleID=role.roleID
ORDER BY staff.StaffID asc
) q
GROUP BY Full_Name
Насколько я понимаю, мне понадобится подзапрос для фильтрации строк? Любая помощь приветствуется, спасибо.