Есть две таблицы - посты (id, ...) и теги (id, post_id, ...). Нужно сделать страницу поиска, на которой будут отображаться посты и теги к ним привязанные.
Для этого делается два запроса. Сначала выбираем посты по каким-то критериям: select * from posts where ...
Потом берем id постов: $ids = array_column($posts, 'post_id');
И выбираем теги для этих постов: select * from posts where post_id in (...)
И в PHP-коде объединяем результаты, привязывая теги к соответствующим постам.
Правильно ли это, или надо делать как-то по-другому? Единственный вариант, который приходит мне в голову - это сделать GROUP_CONCAT по тегам, а потом в php-коде порезать строку в массив - но это кажется совсем неправильным вариантом.
Несколько возможных вариантов:
1) Подобный вопрос. Используйте group by post_id + group_concat для tag.name
2) JSON_ARRAYAGG(col_or_expr). Т.е. формировать сразу JSON массив
Вопрос в том, как из двух таблиц (полученных или просто через join, или через join+group by + group_concat, или двумя запросами, или как-то ещё) получить двухмерный массив вида