0

カウント (フィールド) の正しい数を表示するのに問題があります。フィールドごとにグループ化しようとしていますが、グループごとの順序とそれらの数を返したいです。

コントローラーは

    $this->load->library('pagination');

    $query = "SELECT usercode,count(usercode) AS co FROM tabs
    GROUP BY usercode ORDER BY co desc";

    $config['total_rows'] = $this->db->query($query)->num_rows();
    $config['num_links'] = '25';
    $config['uri_segment'] = 3;
    $config['base_url'] = base_url() . "/user/topCreators/";
    $config['per_page'] = '25';
    $config['anchor_class'] = " class=\"number\" ";
    $config['cur_tag_open'] = "<a href=\"#\" class=\"number 
    current\" title=\"Current Page\">";
    $config['cur_tag_close'] = "</a>";

    $this->pagination->initialize($config);
    if ($this->uri->segment(3) == FALSE){
        $offset = 0;
    }
    else
    {
        $offset = $this->uri->segment(4);
    }

    $limit = $config['per_page'];
    $data["total_records"] = $config['total_rows'];
    $data["page_links"] = $config["per_page"];


    $data["query"] = $this->db->query($query . " LIMIT $limit OFFSET $offset");

    $this->load->view("top_creators", $data);

私のビューファイルは

   <?php foreach($query->result() as $me) {?>
   <?= $me->co?>  

   <?php }?>
4

2 に答える 2

1

coテーブルタブですべてのユーザーコードをカウントしているため、各結果で同じ数になるため、順序付けは機能しません。また、次$this->db->query($query)->num_rows();の値と同じであるため、実行が冗長になります。co

于 2012-09-01T21:28:29.093 に答える
0

あなたのケースで何がうまくいかないかをより詳細に説明する必要があります。


私の意見では、ページネーションを扱うときのベスト プラクティスはSQL_CALC_FOUND_ROWSを使用することです。

基本的に、これにより、1 つのクエリを実行して、

// Main query with SQL_CALC_FOUND_ROWS

$row = $this->db->query("SELECT FOUND_ROWS() AS found")->row();
$config['total_rows'] = $row->found;

SQL_CALC_FOUND_ROWSはすべての行をカウントしますが、 LIMIT内の行のみを返します。これにより、システムに対するクエリを減らすことができ (ラグが少なくなります) 、同じクエリから値を取得するため、常に正しい total_rows が得られます。

于 2012-09-01T22:50:22.250 に答える