ユーザーがコンテンツに投票できる投稿テーブルがあります。投票順に投稿を閲覧する機能を追加したいと考えています。各ページに表示される投稿数を制限し、ページネーション システムを実装したいと考えています。
したがって、LIMIT および offset パラメータを使用して行を取得する方法を理解していますが、これはデータベースで順序付けされたとおりにデータを取得します。CIでページネーションを実装する方法を知っています。投票列を ORDER BY する方法も知っていますが、2つを組み合わせて複数のページで正しい出力を得る方法がわかりません。LIMIT と ORDER BY を行う方法は次のとおりです。
$this->db->limit($count);
$this->db->order_by('votes','desc');
$query = $this->db->get('submission', $num, $offset);
どのように動作するか:
各ページに 10 件の投稿が投票順に並べられている場合、最初のページには上位 10 件が含まれ、2 ページ目には 11 番目から 20 番目に投票数の多い投稿が含まれる必要があります。
これまでのところ、投票によって並べ替えられた送信テーブルからすべてのデータを配列に取得し、それをページネーションのデータ ソースとして使用するだけです。ただし、データセットが大きくなるにつれて、これはかなり非効率的になります。各ページに適切なデータのみを選択できるようにする、知らない SQL があるかどうかを知りたいですか?