Du kan få allt i en enda fråga med en enkel join, t.ex.:
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
Detta returnerar all data, men det är lite jobbigt att konsumera, eftersom du måste iterera igenom varje person ändå. Du kan gå längre och gruppera dem:
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
Du får något sånt här som utdata:
department | name
-----------|----------------
sales | Tom, Bill, Rachel
marketing | Jessica, John