PHP MYSQL выбрать несколько элементов
Как одним запросом сделать выборку из базы (выбрать книгу, всех её авторов и все её жанры), чтобы на выходе получился примерно такой массив (в массиве book_genres в качестве ключа выступает category_id, а в качестве значения category_name):
Array
(
[book_id] => 1
[book_name] => Первая книга
[book_genres] => Array
(
[1] => Романы
[2] => Детективы
)
)
Нужно, чтобы из этого массива можно было сделать ссылку типа
<a href="genres/$book_genres[$key]">$book_genres[$value]</a>
Пробовал делать кучей разных способов, но ни один из них не дал нужного результата. Перешерстил интернет и находил либо какие-то сложные, монструозные запросы в которых вообще не смог разобраться, либо опять таки те решения, которые не давали желаемого результата.
Пока что самый очевидный способ делать это в два запроса. Пробовал делать через GROUP_CONCAT (в таблице с книгами хранил список категорий в виде строки: 1,2), но этот вариант тоже так себе, т.к. потом его нужно преобразовывать в массив, потом обратно в строку и получается ерунда какая-то.
P.S. Может как-то по-другому спроектировать базу данных?
Прикрепляю скриншот БД.
Ответы (1 шт):
делайте ссылку сразу в MYSQL
SELECT CONCAT('genres/',table_2.genre_id) AS `href`,
table_3.category_name AS `link_name`
FROM table_2
LEFT JOIN table_3 ON table_3.category_id = table_2.genre_category
ORDER BY table_2.genre_book_id
у тебя будет сразу список ссылок
