SQL Выбор определенного количества элементов, для которых выполняются 2 условия

Я изо всех сил пытаюсь заставить DISTINCT COUNT работать с SQL DISTINCT SELECT

Не уверен, что мне следует использовать здесь different, но я правильно понял, используя подзапрос, хотя это очень тяжелая обработка.

Этот запрос делает то, что я в конечном итоге хочу получить (без веса)

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

Это приближается и намного эффективнее, но я не могу заставить работать счетчик, он считает (очевидно) только отдельный счетчик, равный 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

Любые предложения, я уверен, что они небольшие, и часами искали в сети ответ, но безрезультатно для двух условий.

Спасибо,


person wingman    schedule 06.12.2010    source источник


Ответы (2)


Вы пробовали следующий запрос

Изменить

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
person Lieven Keersmaekers    schedule 06.12.2010
comment
Спасибо, Ливен, это было почти правильно, но поставило меня на правильный путь, я просто вынул |GROUP BY 'productID'|, и это победитель, большое спасибо, сэкономил мне кучу времени :) - person wingman; 06.12.2010

При использовании GROUP BY вам не нужно использовать предложение DISTINCT. Попробуйте следующее:

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 
person James Culshaw    schedule 06.12.2010