如何解决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');
结果:
,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。