2012-11-14 13 views
6

私はこの問題で私を助ける人が必要です。私の頭は今日はまっすぐ考えたくない。各recensionにコメントを数えますか?

"recensions"という名前のテーブルと "comments"という名前のテーブルがあります。各テーブルには、 "amne_id"という名前の列があります。これは私が正しいrecensionにコメントを接続できるようになります。

は今、私の最初のページに、私は単純にコードですべてのrecensions取得:私が欲しいもの

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

すると、各校訂が持っているどのように多くのコメントをカウントすることです。しかし、私はどのように考えていない。私は多分JOINとnum_rows()を使うべきでしょうか?

理解していないかどうか質問してください。

楽しい一日を!

+0

私はそれはCodeIgniterの中でものになるかどうか分かりませんが、RECなどのrecensionsからtot_commentsがrec.amne_id = com.amne_idのCOMとのコメントを登録しようとして問題がJOINのLIKE「SELECT COUNT(rec.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(); 

はあなたのrecensions 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-loopまたは?を使用する私の少しの知識のために申し訳ありません、私は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; 
} 
関連する問題