2011-10-29 4 views
0
SELECT li.listing_id, li.title, p.name, c.comment, COUNT(*) AS pic_count 
    FROM listings li 
    LEFT JOIN photos p ON li.listing_id = p.listing_id 
    LEFT JOIN comments c ON li.listing_id = c.listing_id 
    WHERE li.listing_id =1 
    GROUP BY li.listing_id 
    LIMIT 1; 

위의 쿼리는 주어진 listing_id에 대한 사진 수를 제공합니다. 동일한 쿼리에서 해당 listing_id에 대한 의견 수를 원하는대로 설정할 수 있습니까? 하나의 쿼리에서 2 카운트 ..하나의 쿼리에서 여러 레코드 수를 세는 경우

답변

3

개수가 잘못되었습니다. 목록으로 그룹화하려면 p.name을 필드 목록에 포함하면 안됩니다. 그러나 그것 없이도 카운트가 *이므로 사진이없는 목록의 경우 1을 얻습니다. 당신의 사진의 고유 한 ID를 가지고있는 경우

,이 작업을 수행 할 수 있습니다

SELECT li.listing_id, li.title, 
    COUNT(DISTINCT p.photo_id) as photo_count, 
    COUNT(DISTINCT c.comment_id) as comment_count 
FROM listings li 
    LEFT JOIN photos p ON li.listing_id = p.listing_id 
    LEFT JOIN comments c ON li.listing_id = c.listing_id 
WHERE li.listing_id =1 
GROUP BY li.listing_id 
LIMIT 1; 
+0

을 잘 – XoR

+0

는'C가 있었다 ... 나는 각 테이블에 대해 고유 한 ID를 가지고 수행하지만 여전히 쿼리를 실행할 수 없습니다 .comment'과 필드 목록에 쉼표가 추가되었습니다. 나는 그들을 제거했습니다. 문제가 계속되는 경우를 대비하여 다시 시도하고 오류를 게시 할 수 있습니까? – GolezTrol

+0

네, 작동합니다! :) – XoR

관련 문제