Sie können alles in einer einzigen Abfrage mit einem einfachen Join erhalten, z. B.:
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
Dies gibt alle Daten zurück, aber es ist ein bisschen mühsam zu konsumieren, da Sie sowieso durch jede Person iterieren müssen. Sie können weiter gehen und sie gruppieren:
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
Als Ausgabe erhalten Sie etwa Folgendes:
department | name
-----------|----------------
sales | Tom, Bill, Rachel
marketing | Jessica, John