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 шт):

Автор решения: Mcile

делайте ссылку сразу в 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

у тебя будет сразу список ссылок

→ Ссылка