2010-09-18 3 views
0

Мой вопрос не так уж и трудный, я просто не могу найти ответ нигде.MySQL COUNT в двух таблицах одновременно

У меня есть 3 стола.

webshops, webshop_category и webshop_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 

My # 1 Интернет-магазин получил 2 категорию с 4-х пунктами. Но с этим запросом он говорит:

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

Но у меня всего 2 категории. Поэтому я бы хотел:

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

Как я могу это сделать?

Спасибо за помощь.

ответ

1

Используйте COUNT (DISTINCT webshop_category.id), который должен сделать это в этом случае.

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 
+0

(+1) DISTINCT внутри COUNT должен это делать. –

Смежные вопросы