2010-09-18 4 views
0

Ma question n'est pas si difficile, je ne trouve vraiment pas la réponse nulle part.MySQL COUNT dans deux tableaux en même temps

J'ai 3 tables.

webshops, webshop_category et webshop_item.

Ma requête est:

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 

Mon # 1 boutique en ligne a 2 catégories avec 4 articles. Mais avec cette requête, il dit:

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

Mais je viens de 2 catégories. Donc, je voudrais qu'il soit:

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

Comment puis-je faire cela?

Merci pour l'aide.

Répondre

1

Utilisez un COUNT (DISTINCT webshop_category.id) qui devrait le faire dans ce cas.

1

mettre un dans le compte distinct comme:

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) à l'intérieur du COUNT DISTINCT devrait le faire. –

Questions connexes