2012-11-14 143 views
6

我需要有人来帮助我解决这个问题。我的头脑今天不想思考。对每个评论都计数评论?

所以,我有一个名为“recensions”的表,另一个名为“comments”。在每个表中,我有一个名为“amne_id”的列。这将使我可以将评论连接到正确的评论。现在

,我的第一页上,我简单地让所有的校订与代码:

$rec = $this->db->get('recensions'); 

我要的是计算每个校订了多少评论。但我不知道如何。我想我也许应该使用JOIN和num_rows()?

请问你是否不理解,所以我可以更好地解释。

祝您有美好的一天!

+0

我不知道怎么会在笨但问题是参加一个像“SELECT COUNT(rec.amne_id)从校订tot_comments为REC JOIN意见作为COM ON rec.amne_id = com.amne_id ' –

回答

2
$this->db->select('COUNT(*) as count, recensions.anme_id as recension_id') 
->from('recensions') 
->join('comments','recensions.anme_id = comments.anme_id','left') 
->group_by('anme_id'); 
$result = $this->db->get(); 

应该给你的修订本ID和评论为该ID计数。

然后循环:

foreach($result->result() as $row){ 
    echo "Recension id $row->recension_id has $row->count comments<br />"; 
} 
+0

我应该把“$ rec = $ this-> db-> get('recensions “);”你刚才写的是什么? – Zacharias

+0

由你决定。如果您不想要所有结果,请将其替换。如果您想保留所有退款,请勿更换。我发布的内容只会给你一个带有recension.anme_id和anme_id的注释数的对象。 – stormdrain

+0

我应该如何打印出结果呢?使用foreach循环或?对不起,我的小知识,即时通讯新的Codeigniter :) – Zacharias

0

我不知道你正在使用的数据库连接,但在纯SQL(假设connection recensions.id=comments.anme_id连接),试试这个:

SELECT COUNT(comments.id), anme_id 
FROM recensions 
LEFT JOIN comments on comments.anme_id=recensions.id 
GROUP BY anme_id 
+0

嗯,当我尝试这段代码时,我得到了一个错误。 “你的SQL语法错误;查看对应于你的MySQL服务器版本的手册,在'*)附近使用正确的语法” – Zacharias

0

像这样?

$sql = mysql_query("SELECT * FROM recensions"); 
while($row = mysql_fetch_array($sql)){ 
$amne_id = $row{"amne_id"}; 
$sql2 = mysql_query("SELECT * FROM comments WHERE amne_id='$amne_id'"); 
$total_comments = mysql_num_rows($sql2); 
echo $total_comments; 
}