Je kunt het allemaal in een enkele zoekopdracht krijgen met een simpele join, bijvoorbeeld:
SELECT d.name AS 'department', p.name AS 'name'
FROM department d
LEFT JOIN people p ON p.department_id = d.id
ORDER BY department
Hiermee worden alle gegevens geretourneerd, maar het is een beetje lastig om te consumeren, omdat je toch door elke persoon moet herhalen. Je kunt verder gaan en ze samen groeperen:
SELECT d.name AS 'department',
GROUP_CONCAT(p.name SEPARATOR ', ') AS 'name'
FROM department d
LEFT JOIN people p ON p.department_id = d.id
GROUP BY department
Je krijgt zoiets als dit als uitvoer:
department | name
-----------|----------------
sales | Tom, Bill, Rachel
marketing | Jessica, John