SUM запрос Codeigniter приносит только одну строку - PullRequest
0 голосов
/ 28 февраля 2019

Когда я добавляю SUM в Codeigniter SELECT, он возвращает только одну строку.Но когда я удаляю его, он возвращает все возможные совпадающие записи.

$this->db->where('posts.status',1)
     ->select('posts.title')
     ->select('posts.description')
     ->select('posts.posted_by')
     ->select('posts.posted_on')
     ->select('posts.category')
     ->from('posts')

     ->join('categories','posts.category=categories.id','LEFT')
     ->select('categories.title as cat_title')

     ->join('users','users.id=posts.posted_by','LEFT')
     ->select('users.username')
     ->select('users.first_name')
     ->select('users.last_name')

     // this section is causing to return only one entry/row, 
     // when I remove/comment this section, it brings the desired results
     ->join('votes','votes.post_id=posts.id',"LEFT")
     ->select('SUM(upvote) as upvote_count')
     ->select('SUM(downvote) as downvote_count')

     ->get()
     ->result_object();

1 Ответ

0 голосов
/ 28 февраля 2019

Попробуйте добавить:

->group_by('posts.id')

После

->select('SUM(downvote) as downvote_count')

Так что теперь запрос будет:

$this->db->where('posts.status',1)
    ->select('posts.title')
    ->select('posts.description')
    ->select('posts.posted_by')
    ->select('posts.posted_on')
    ->select('posts.category')
    ->from('posts')

    ->join('categories','posts.category=categories.id','LEFT')
    ->select('categories.title as cat_title')

    ->join('users','users.id=posts.posted_by','LEFT')
    ->select('users.username')
    ->select('users.first_name')
    ->select('users.last_name')

    // this section is causing to return only one entry/row, 
    // when I remove/comment this section, it brings the desired results
    ->join('votes','votes.post_id=posts.id',"LEFT")
    ->select('SUM(upvote) as upvote_count')
    ->select('SUM(downvote) as downvote_count')
    ->group_by('posts.id')

    ->get()
    ->result_object();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...