sql cte不重复计数

问题描述

我想将品牌产品的总数添加到总数栏中。

http://sqlfiddle.com/#!18/2d00a/1

这是我的查询;

WITH cte AS
(
    SELECT id 
    FROM category 
    WHERE id = 1 

    UNION ALL 

    SELECT c.id 
    FROM category c,cte 
    WHERE c.parentid = cte.id
),cte2 AS 
(
    SELECT brandid,d.catid 
    FROM products d,cte 
    WHERE d.catid = cte.id

    UNION ALL

    SELECT u.brandid,COUNT(DISTINCT u.id) 
    FROM products u,cte 
    WHERE catid = cte.id
    GROUP BY brandid
)
SELECT DISTINCT 
    brandid,logo,brand,id,id as total 
FROM
    brand,cte2 
WHERE 
    id = cte2.brandid 
ORDER BY 
    brand ASC

解决方法

这里是根据我的理解所得到的查询,以获取每个品牌的总产品数。 DBFIDDLE工作代码

header('HTTP/1.0 301');

结果:

enter image description here

,
166.66666666666666

假设您要根据类别1(也包括子类别)过滤产品

SELECT b.id,b.logo,b.brand,count(p.id) total
FROM brand b
LEFT JOIN products p ON p.brandid = b.id
GROUP BY b.id,b.brand

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...