@noiseee

Как правильно сделать выборку один-ко-многим?

Здравствуйте.

Есть две таблицы - посты (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-коде порезать строку в массив - но это кажется совсем неправильным вариантом.
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
jemunjho
@jemunjho
Несколько возможных вариантов:
1) Подобный вопрос. Используйте group by post_id + group_concat для tag.name
2) JSON_ARRAYAGG(col_or_expr). Т.е. формировать сразу JSON массив
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Uwe_Boll
@Uwe_Boll
Я Злой и Страшный Уве Болл в Разработке знаю Толк
leftjoin или rightjoin должен ты использовать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы