Задать вопрос
  • Фильтрация характеристик товаров с подсчетом?

    @alexalexes
    Из where убрать дополнительное условие фильтрации, и добавить его же в case в count.
    Тогда count будет отбивать именно статистику по условиям фильтрации (считается все, что выходит из case не null), но занулять там, где условия не выполняются.
    ...
    count(
    case
    when p.id = ANY (
    	SELECT prod_id
    	FROM "Product_properties" pp
    	WHERE pp.attr_alias = 'ram' AND pp.option_alias IN ('2gb','3gb','4gb','8gb')
    )
    AND
    p.id = ANY (
        SELECT prod_id
        FROM "Product_properties" pp
        WHERE pp.attr_alias = 'storage' AND pp.option_alias IN ('16gb','128gb')
    )    
    then 1
    end
    )
    ...

    PS: Подзапросы Any можно вынести в секцию With, если они дают однотипную выборку и используются во многих местах.
    Ответ написан
    5 комментариев