2012-11-14 144 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; 
}