在一个查询中计算多个记录计数

时间:2011-10-29 19:16:13

标签: mysql sql count

    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个计数..

1 个答案:

答案 0 :(得分:3)

你的计数错了。如果要按列表分组,则p.name不应位于字段列表中。但即使没有它,你也可以获得1张没有照片的商品,因为*计数。

如果你的foto有唯一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;