単純な結合を使用して、1つのクエリですべてを取得できます。例:
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
これによりすべてのデータが返されますが、とにかくすべての人を反復処理する必要があるため、消費するのは少し面倒です。さらに進んで、それらをグループ化できます:
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
出力として次のようなものが得られます:
department | name
-----------|----------------
sales | Tom, Bill, Rachel
marketing | Jessica, John