我有两张桌子。一个是类别ID,另一个是产品表。我想计算每个类别ID的产品数量,查询如下。
SELECT hkgg_emall_goods_class.gc_id, COUNT(*) as productcount
FROM hkgg_emall_goods_class
LEFT JOIN hkgg_emall_goods
ON hkgg_emall_goods.gc_id=hkgg_emall_goods_class.gc_id GROUP BY hkgg_emall_goods_class.gc_id ;
它显示了我想要的内容,除了查询显示某些行的计数为1,即使它们没有关联的产品,并且当实际有一个产品关联时,某些行为1计数。
我想要你的建议 1)如何解决这个问题 2)我在类别表中添加了gc_productcount列。如何将计数查询插入每行的gc_productcount列?
INSERT INTO `hkgg_emall_goods_class.gc_productcount`
当我将它放在选择计数查询前面时,此查询效果不佳。
P.S。我已经在stackoverflow中浏览了另一个线程,但运气不足以浏览类似的解决方案。
提前谢谢你。
答案 0 :(得分:0)
假设hkgg_emall_goods
表具有主键或至少一个唯一键,那就是您想要计算的内容。即你不想COUNT(*)
,你想要COUNT(hkgg_emall_goods.id)
。
假设主键为hkgg_emall_goods.id
,那么您的查询将如下所示:
SELECT
hgc.gc_id,
COUNT(hg.id) AS productcount
FROM hkgg_emall_goods_class hgc
LEFT JOIN hkgg_emall_goods hg ON hg.gc_id = hgc.gc_id
GROUP BY
hgc.gc_id