MySQL COUNT在两个表中同时出现

时间:2010-09-18 10:28:50

标签: mysql sql group-by

我的问题并不那么难,我真的无法在任何地方找到答案。

我有3张桌子。

webshopswebshop_categorywebshop_item

我的查询是:

SELECT webshops.id, webshops.name, webshops.tax, webshops.contact_name, webshops.contact_email, webshops.contact_phone, webshops.contact_address, COUNT(webshop_category.id), COUNT(webshop_item.id) 
FROM webshops, webshop_category, webshop_item 
WHERE webshops.id = webshop_category.ws_id AND webshop_category.id = webshop_item.ws_category
GROUP BY webshops.id

我的#1网上商店有2个类别,包含4个项目。但是通过这个查询,它说:

id  ...  COUNT(webshop_category.id)  COUNT(webshop_item.id)
 1                    4                         4

但我只有两个类别。所以我希望它是:

id  ...  COUNT(webshop_category.id)  COUNT(webshop_item.id)
 1                    2                         4

我该怎么做?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

使用COUNT(DISTINCT webshop_category.id),在这种情况下应该这样做。

答案 1 :(得分:1)

在计数中加入一个明显的内容,如:

SELECT webshops.id, webshops.name, webshops.tax, webshops.contact_name, webshops.contact_email, webshops.contact_phone, webshops.contact_address, COUNT(DISTINCT webshop_category.id), COUNT(webshop_item.id) 
FROM webshops, webshop_category, webshop_item 
WHERE webshops.id = webshop_category.ws_id AND webshop_category.id = webshop_item.ws_category
GROUP BY webshops.id