2011-04-17 12 views
7

अब मुझे पता है कि दो टेबल, में कैसे शामिल होना है, मैं वास्तव में सक्रिय रिकॉर्ड के साथ दूसरी तालिका में पंक्तियों की संख्या को गिनना चाहता हूं।कोडइग्निटर: एक शामिल तालिका से परिणाम गिनती

कहो, मैं इन दो तालिकाओं है:

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'); 

मुझे क्या करना चाहिए? मैं क्या गलत कर रहा हूं?

उत्तर

7

समझ गया! :)

$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

हाँ, यह सही तरीका है,

$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(); 
संबंधित मुद्दे