我正在构建一个具有pyramid
或binary tree
概念的SQL Server项目......
我会尝试用一些表来解释!
第一张表是
TB_USER(ID,ID_FATHER,左/右树位置)
用户可以销售产品!因此,当他们出售他们赚取积分。然后,第二个表是
TB_SELL(ID_USER,ID_PRODUCT,POINT)
因此,我希望在二进制模型树中以下面的每个客户端的点的报告格式查看。如何在这种搜索中设计这些表格以使我的生活更轻松?我将永远让我的soons
达到9级。
我知道通过程序我可以解决这个问题,但我想知道一个优雅而简单的解决方案。
谢谢
答案 0 :(得分:2)
我使用递归查询解决了这个问题:
with with_user_earns as (
-- get father information (start)
select father.id, father.str_name, father.id_father, father.ind_father_side_type, 1 as int_user_level from tb_user father where id = 9
union all
-- get all soons (stop condition)
select son.id, son.str_name, son.id_father, son.ind_father_side_type, WUE.int_user_level + 1 from tb_user as son inner join with_user_earns as WUE on son.id_father = WUE.id where son.id_father is not null /*and WUE.int_user_level < 9*/
)
-- show result
select with_user_earns.id, with_user_earns.str_name, with_user_earns.id_father, with_user_earns.ind_father_side_type, with_user_earns.int_user_level from with_user_earns order by with_user_earns.int_user_level, with_user_earns.id