2011-09-05 107 views
1

我有兩個表格,一個保存關於圖像的信息,另一個包含關於評論的信息,再次顯示圖像。執行連接和計數的正確mysql查詢是什麼?

我需要一個查詢來顯示針對一個查詢中的圖像的評論數量。我曾嘗試以下:

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子句對結果數據集進行過濾。

什麼你應該做的是一個LEFT OUTER JOIN,其中「對」從只有那些行圖像每行從評論它滿足特定條件

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 

是我結束了使用 - > SELECT l.img_id,COUNT(c.comment_id)AS COMMENT_COUNT FROM tbl_images爲L LEFT OUTER JOIN tbl_image_comments AS c USING(img_id)GROUP BY l.img_id; – Tony

+0

@Jon:你忘了'GROUP BY ...' –

+0

@Tony:你爲什麼要把GROUP BY放在那裏? – Jon

0

的選項:

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

您需要爲計數指定一個分組才能按預期工作。

試穿查詢

相關問題