Во-первых, я настоятельно рекомендую не использовать GROUP_CONCAT.Группировка нескольких элементов данных в одно поле является антишаблоном SQL.
Обычный способ вернуть эти данные - это , как вы говорите, иметь по одной строке на ребенка.Это наиболее обобщенное представление отношения 1: много.
Там может быть соображением, что вы не хотите возвращать дубликаты данных клиенту.Например;если вы хотите, чтобы все данные о родителях и детях были указаны для всей школы, вы можете не захотеть, чтобы имена родителей возвращались несколько раз, если в школе есть несколько детей.
В таком случае возвращение является нормальнымдва набора результатов.
1. Все родители, упорядоченные каким-то образом
2. Все дети, включая parent_id, чтобы связать данные обратно, в том же порядке
Хотя order1 может быть «именем родителя», а данные детей не включают имена родителей, вы можете по-прежнему заказывать таким образом.
SELECT * FROM parents ORDER BY name
SELECT children.* FROM parents INNER JOIN children ON children.parent_id = parents.id ORDER BY parents.name
Затем ваш клиент итеритчерез оба набора данных (в виде отсортированного слияния), легко сопоставляя детей с родителями, поскольку они находятся в одном и том же порядке.
Полезность этого метода зависит от объема трафика, который вы отправляете по сети.Обычно проще просто отправить избыточные данные.Там, где это проблематично, этот метод хорошо работает.