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