CodeIgniter: подсчет результатов из объединенной таблицы - PullRequest
8 голосов
/ 17 апреля 2011

Теперь я знаю, как объединить две таблицы, Я бы хотел посчитать количество строк во второй таблице с активными записями .

Скажем, у меня есть две таблицы:

blog     comments
-------  ----------
id       id
title    blog_id
content  comment

Нет. Я хочу взять три последние записи в блоге и посчитать количество комментариев на запись в блоге, все в одном запросе. Я пробовал что-то вроде этого, но это не работает:

$this->db->select('*')
         ->from('blog')
         ->order_by('blog.id', 'desc')
         ->limit(3);

$this->db->join('comments', 'blog_entry_id = blog.id')
         ->group_by('blog_entry_id')
         ->count_all_results('comments'); 

Что мне делать? Что я делаю не так?

Ответы [ 2 ]

9 голосов
/ 17 апреля 2011

Понял!:)

$this->db->select('blog.*, COUNT(comments.id) as num_comments')
         ->from('blog')
         ->order_by('blog.id', 'desc')
         ->limit(3);

$this->db->join('comments', 'blog_entry_id = blog.id')
         ->group_by('blog_entry_id');
0 голосов
/ 02 декабря 2015

Да, это правильный путь,

$this->db->where('p.status','Active');
        $this->db->where('p.admin_status','Active');
        $this->db->select("p.id,p.date,p.user_id,p.title,p.contents,p.category_id,p.status,p.admin_status,u.username,i.mediaid,COUNT(c.id) as comments")->from('posts as p')->limit($num,$start)->order_by($order,$format);     
        $this->db->join('users u','u.id=p.user_id','left');
        $this->db->join('user_meta m', 'm.user_id = p.id','left');
        $this->db->join('user_profile_image i', 'i.userid = p.id','left');
        $this->db->join('comments c', 'c.postid = p.id','left');        
        return $this->db->get()->result();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...