@kiukishenkaec

Как правильно соединить две таблицы?

Есть две таблицы, содержащие новости по разным видам спорта:
soccer_news и hockey_news
Между собой никак не связаны.
Нужно соединить эти две таблицы и отсортировать по дате потом вывести через пагинацию.

Думал сделать как-то так:
$soccer =  App\SoccerNews::get();
$hockey =  App\HockeyNews::get();
$collection  = new Collection;
$all = $collection->merge($soccer)->merge($hockey);

Но статей может быть миллион... а значит нужно ну чересчур много оперативы, чтобы это всё реализовать...
Или придётся менять структуру базы и всё писать в одну таблицу all_news?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@alexalexes
Лучше, если у вас все типы новостей будут в одной таблице, а различаться будут по section_id (соответственно, 0 - без темы, 1 - футбол, 2 - хоккей и тд.)
Тогда запрос на порционную выборку делается элементарно.
select a.*
  from (select n.*,
              rank() over (partition by n.section_id order by n.publication_date desc) rnk -- нумеруем порядок новости в пределах каждой секции по порядку даты публикации
            from news n) a
where a.rnk < 10 -- сколько новостей выводить на каждую секцию
order by a.section_id, a.publication_date desc
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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