Здравствуйте, у меня есть 3 таблицы: Книги, Авторы и таблица которые связывает их. Используя вот такой код SELECT b.*, a.id as id_auth, a.first_name, a.last_name FROM book as b INNER JOIN book_to_author as ba ON b.id = ba.book_id INNER JOIN author as a ON ba.author_id = a.id WHERE b.id = ?' я получаю вот такой масив Array ( [0] => Array ( [id] => 7 [name] => Design Patterns [isbn] => 749579432 [date_published] => 2005-05-30 [publisher_id] => 5 [id_auth] => 7 [first_name] => Эрих [last_name] => Гамма ) [1] => Array ( [id] => 7 [name] => Design Patterns [isbn] => 749579432 [date_published] => 2005-05-30 [publisher_id] => 5 [id_auth] => 8 [first_name] => Ричард [last_name] => Хелм ) [2] => Array ( [id] => 7 [name] => Design Patterns [isbn] => 749579432 [date_published] => 2005-05-30 [publisher_id] => 5 [id_auth] => 9 [first_name] => Ральф [last_name] => Джонсон ) [3] => Array ( [id] => 7 [name] => Design Patterns [isbn] => 749579432 [date_published] => 2005-05-30 [publisher_id] => 5 [id_auth] => 10 [first_name] => Джон [last_name] => Влиссидес ) ) Вопрос, можно ли как то их сгрупировать, чтобы получить вот примерно такой код: [0] => Array ( [id] => 7 [name] => Design Patterns [isbn] => 749579432 [date_published] => 2005-05-30 [publisher_id] => 5 [id_auth] => 10 [0] => array( [first_name] => Джон [last_name] => Влиссидес ) [1] => array( [first_name] => вася [last_name] => Пупкин ) [2] => array( [first_name] => Ит д [last_name] => И тд ) ) Всем спасибо=))
Ну тут вопрос не про sql я так понял PHP: $result = []; $array; //результат sql запроса foreach ( $array as $item) { $result[] = [ 'first_name' => $item['first_name'], 'last_name' => $item['last_name'] ]; } return $result;
Дело в том, что эти результаты мне нужны только одним массивом, мне не нужно много идентичных массивов, где только одно поле отличается,и если я дописываю GROU BY id, то получу только одного автора.. --- Добавлено --- А вариант сгрупировать с помощью GROUP_CONCAT и потом разбивать с помощью explode(), это вообще нормальная практика?
Я понимаю, просто добавьте к нему ваш, например так: PHP: $array; //результат sql запроса $result = [ 'id' => $array[0]['id'], 'name' => $array[0]['name'], 'isbn' => $array[0]['isbn'], 'date_published' => $array[0]['date_published'], 'publisher_id' => $array[0]['publisher_id'], 'id_auth' => $array[0]['id_auth'] ]; foreach ( $array as $item) { $result[] = [ 'first_name' => $item['first_name'], 'last_name' => $item['last_name'] ]; } return $result;