需要实现统计所有的父节点下面所有子节点产品之和
想实现比如效果
A应用 下所有子节点调用总次数
B应用 下所有子节点调用总次数
涉及3张表
一个平台应用表,一个平台下产品表,一个应用明细表
表明分别为:basic_platform,basic_introduce,logs_storage
麻烦问下,这种需要怎么实现,希望知道的各位告知呢。万分感激,请不要复制粘贴其他答案来凑数,需要正确的
需要实现统计所有的父节点下面所有子节点产品之和
想实现比如效果
涉及3张表
一个平台应用表,一个平台下产品表,一个应用明细表
表明分别为:basic_platform,basic_introduce,logs_storage
麻烦问下,这种需要怎么实现,希望知道的各位告知呢。万分感激,请不要复制粘贴其他答案来凑数,需要正确的
首先先上结果:
其中平台应用表为 t1,平台下产品表为 t2, 应用明细表为 t3
select temp2.platform_id AS '平台应用id',t1.platform_name AS '平台应用名称',SUM(temp2.total_piece) AS '该平台下所有产品的扣除总次数之和'
from t1
inner join (
select t2.platform_id AS platform_id,t3.app_key AS app_key,SUM(t3.piece) AS total_piece
from t2
inner join t3 on t2.app_key = t3.app_key
group by t3.app_key,t2.platform_id
) temp2 on t1.platform_id = temp2.platform_id
group by temp2.platform_id,t1.platform_name
解题思路:
-- 1、表名明确
-- 首先确定 平台应用表为 t1,平台下产品表为 t2, 应用明细表为 t3
-- 2、表关系明确
-- 其中 t2 平台下产品表中的 platform_id 与 t1 平台应用表中的平台id 为关联关系
-- t3 与 t2 中的 app_key 为关联字段
-- 3、t1 与 t2 为一对多,t2 与 t3 是一对多
-- 开始解题
-- 首先计算出单个产品的 扣除总次数
select app_key,SUM(piece) AS total_piece FROM t3 group by app_key;
-- 将上方的单个产品的 扣除总计数关联到 t2 表中
select t2.id,t2.platform_id,t2.app_key,temp1.total_piece
from t2
inner join (select app_key,SUM(piece) AS total_piece FROM t3 group by app_key) temp1 on t2.app_key = temp1.app_key
-- 上方为拆分想法思路方便理解所写,其实我们可以将上面两步操作合起来,采用下面这种方式一样能够达到同样效果
select t2.platform_id,t3.app_key,SUM(t3.piece) AS total_piece
from t2
inner join t3 on t2.app_key = t3.app_key
group by t3.app_key,t2.platform_id
-- 如上我们就得到了一张具有 t2.platform_id 与 根据 t3 计算出来的单个产品的扣除总次数数据表
-- 下面我们将此数据表做为 临时数据表temp2 与 t1 关联得到最终的结果,具体操作如下
select temp2.platform_id AS '平台应用id',t1.platform_name AS '平台应用名称',SUM(temp2.total_piece) AS '该平台下所有产品的扣除总次数之和'
from t1
inner join (
select t2.platform_id AS platform_id,t3.app_key AS app_key,SUM(t3.piece) AS total_piece
from t2
inner join t3 on t2.app_key = t3.app_key
group by t3.app_key,t2.platform_id
) temp2 on t1.platform_id = temp2.platform_id
group by temp2.platform_id,t1.platform_name