with table1 as ( select 'A' as parent_no, 'B' as no from dual union all select 'A' as parent_no, 'C' as no from dual union all select 'B' as parent_no, 'D' as no from dual union all select 'C' as parent_no, 'E' as no from dual union all select 'A' as parent_no, 'F' as no from dual union all select 'C' as parent_no, 'G' as no from dual union all select 'G' as parent_no, 'H' as no from dual),table2 as ( select 'A' AS NO,1 AS no_level from dual union all select 'B' AS NO,NULL AS no_level from dual union all select 'C' AS NO,2 AS no_level from dual union all select 'D' AS NO,null AS no_level from dual union all select 'E' AS NO,null AS no_level from dual union all select 'F' AS NO,1 AS no_level from dual union all select 'G' AS NO,2 AS no_level from dual union all select 'H' AS NO,null AS no_level from dual),table3 as ( select 'A' as no,100 as money from dual union all select 'B' as no,200 as money from dual union all select 'C' as no,300 as money from dual union all select 'D' as no,400 as money from dual union all select 'E' as no,500 as money from dual union all select 'F' as no,600 as money from dual union all select 'G' as no,700 as money from dual union all select 'H' as no,800 as money from dual )
用户关系图:
有如上3张表,table1表示用户之间的关系,table2表示用户的等级,table3表示用户的钱。
需求:现在要根据这个关系,统计出每个用户的money,如果下级用户有等级,则就不再往下统计
比如:A用户只能统计B,D,这2个用户的money,且不算A本身的money。因为A的下级C和F都有等级,所以C和F以及这2个用户以下的会员都不统计。所以A的结果应该是 600 。
最终需要的结果:
用户,等级,钱
A 1 600
B 400
C 2 1300
D 0
E 0
F 1 0
G 2 800
H 0