@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-коде порезать строку в массив - но это кажется совсем неправильным вариантом.
  • Вопрос задан
  • 69 просмотров
Решения вопроса 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 должен ты использовать
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽