2010-12-06 8 views
2

Je me bats pour obtenir un COUNT DISTINCT travailler avec SQL DISTINCT SELECTSQL Sélection Distinct Nombre d'éléments où 2 conditions sont remplies

Je ne sais pas si je devrais être même de distinct ici, mais je l'ai obtenu il correct à l'aide d'un sous-requête, bien qu'il soit très lourd de traitement sage.

Cette requête fait ce que je veux en fin de compte des résultats sages (sans le poids)

SELECT DISTINCT 
product_brandNAME, 
product_classNAME, 
    (SELECT COUNT(productID) FROM products 
    WHERE products.product_classID = product_class.product_classID 
    AND products.product_brandID = product_brand.product_brandID) as COUNT 
FROM products 
JOIN product_brand 
JOIN product_class 
ON products.product_brandID = product_brand.product_brandID 
AND products.product_classID = product_class.product_classID 
GROUP BY productID 
ORDER BY product_brandNAME 

Cela se rapproche, et est beaucoup plus efficace, mais je ne peux pas obtenir le nombre de travail, il ne compte (évidemment) le nombre distinct qui est 1.

SELECT DISTINCT product_brandNAME, product_classNAME, COUNT(*) as COUNT 
FROM products 
JOIN product_brand 
JOIN product_class 
ON products.product_brandID = product_brand.product_brandID 
AND products.product_classID = product_class.product_classID 
GROUP BY productID 
ORDER BY product_brandNAME 

Toutes les suggestions, je suis sûr que sa petite, et ont fait des recherches sur le net pendant des heures pour une réponse sans succès pour 2 conditions à satisfaire.

Merci,

Répondre

1

Avez-vous essayé requête suivante

Modifier

SELECT product_brandNAME 
     , product_classNAME 
     , COUNT(*) 
FROM products 
     JOIN product_brand ON products.product_brandID = product_brand.product_brandID 
     JOIN product_class ON products.product_classID = product_class.product_classID    
GROUP BY 
     product_brandNAME 
     , product_classNAME 
+0

Merci Lieven, qui était proche de la droite, mais me mettre sur la bonne voie, je viens de prendre le | GROUP BY productID '|, et son vainqueur, merci beaucoup, sauvé moi des tonnes de temps :) – wingman

0

Lorsque vous utilisez GROUP BY vous n'avez pas besoin d'utiliser une clause DISTINCT. Effectuez les opérations suivantes:

SELECT productID, 
     product_brandNAME, 
     product_classNAME, 
     COUNT(*) as COUNT 
    FROM products JOIN product_brand ON products.product_brandID = product_brand.product_brandID 
       JOIN product_class ON products.product_classID = product_class.product_classID  
GROUP BY productID, 
     product_brandNAME, 
     product_classNAME 
ORDER BY product_brandNAME 
Questions connexes