2011-09-05 2 views
1

두 개의 테이블이 있습니다. 하나는 이미지에 대한 정보를 보유하고 다른 하나는 이미지에 대한 정보를 포함합니다.join과 count를 수행하기위한 올바른 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

OK의 말에

GROUP BY l.img_id 

을 내가 사용하는 결국 무엇인가 추가 - 리터의 왼쪽으로 tbl_images로부터 COMMENT_COUNT AS> SELECT l.img_id, COUNT (c.comment_id를) 외부 조인 tbl_image_comments AS c USING (img_id) GROUP BY l.img_id; – Tony

+0

@ 존 : 당신은'GROUP BY ... '를 잊었습니다. –

+0

@ 토니 : 왜 거기에'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

숫자가 예상대로 작동하도록 그룹화를 지정해야합니다.

시도 쿼리이

관련 문제