2011-10-29 69 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

好吧,我確實有每個表一個唯一的ID,但還是你的查詢執行失敗.. – XoR

+0

有一個'C .comment'和外地名單中的額外逗號,這是我忽略的。我刪除了它們。你可以再試一次,併發布錯誤,以防它仍然無法正常工作? – GolezTrol

+0

是的,它的工作原理! :) – XoR