Рассмотрим этот вопрос.
Исходная база тут
Исходный код такой обработки:
<?PHP $db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = ' SELECT b.id bid, b.name book, a.id aid, a.name author FROM library l INNER JOIN authors a ON l.auth_id = a.id INNER JOIN books b ON l.book_id = b.id '; $result = $db->query($query); $library = array(); $lib_list = array(); while($row = $result->fetch_array()){ $auths=array(); if ( isset($lib_list[$row['bid']]['auths']) && count($lib_list[$row['bid']]['auths'] )) { $auths = $lib_list[$row['bid']]['auths']; // сохраняем авторов, которые уже есть } $auths = array_merge($auths, (array)$row['author']); // добавляем нового автора $lib_list[$row['bid']] = array( 'book_id'=>$row['bid'], 'book_name'=>$row['book'], 'auths'=>$auths ); } $db->close(); if (count($lib_list)){ ?> <table> <tr> <th>Книга <th>Авторы </tr> <?PHP foreach ($lib_list as $key=>$lib_rec) { echo '<tr>'; echo '<td>'.$lib_rec['book_name'].'</td>'; echo '<td>'.implode(', ',$lib_rec['auths']).'</td>'; echo '</tr>'; } ?> </table> <?PHP } ?>Результирующая таблица имеет вид:
Книга | Авторы |
---|---|
Мир героев | Николай Андреев |
Лучшие из мертвых | Николай Андреев |
Яд для живых | Николай Андреев |
Сектор мутантов | Николай Андреев |
Геном | Сергей Лукьяненко |
Танцы на снегу | Сергей Лукьяненко, Николай Андреев |
Комментариев нет:
Отправить комментарий