2011-09-05 2 views
1

私は2つのテーブルを持っています.1つはイメージに関する情報を保持し、もう1つはイメージに関するコメントに関する情報を保持します。joinとcountを実行する正しいmysqlクエリは何ですか?

1つのクエリでイメージに対するコメントの数を示すクエリが必要です。私は以下を試しました:

SELECT l.img_id, COUNT(c.comment_id) AS comment_count FROM tbl_images l, tbl_image_comments c WHERE l.img_id = c.img_id; 

しかし、これはちょうどすべてのコメント表を数えているので正しく報告しません。

誰の助けが:)てくださいすることができ

答えて

2

あなたが画像やコメントテーブルのCROSS JOINを作っている、ここでやっている:画像から各行はと「ペア」を取得しますコメントおよびその逆からすべての行(これはコメント数を説明しています)、次にWHERE句を使用して結果のデータセットをフィルタリングします。オプションとして

SELECT l.img_id, COUNT(c.comment_id) AS comment_count 
FROM tbl_images l 
LEFT JOIN tbl_image_comments c ON l.img_id = c.img_id 
+0

の端に

GROUP BY l.img_id 

を追加

試みはOKこれは私が使用して終了するものですOUTER JOIN tbl_image_comments AS c USING(img_id)GROUP BY l.img_id; – Tony

+0

@ジョン:あなたは 'GROUP BY ...'を忘れました –

+0

@トニー:なぜあなたはそこに 'GROUP BY'を入れましたか? – Jon

0

:あなたにやるべきことは何

は、特定の条件を満たすコメントから、これらの行の画像から「ペア」各行LEFT OUTER JOIN、ある

SELECT 
    l.img_id, 
    (select COUNT(*) from tbl_image_comments c l.img_id = c.img_id) AS comment_count 
FROM 
    tbl_images l; 
1

カウントが期待通りに機能するためには、グループ化を指定する必要があります。リットルのLEFTとしてtbl_images FROM COMMENT_COUNT AS> SELECT l.img_id、COUNT(c.comment_idを) - クエリ

関連する問題