SQL建模金字塔或二叉树

时间:2015-02-06 04:09:15

标签: sql sql-server

我正在构建一个具有pyramidbinary tree概念的SQL Server项目......

我会尝试用一些表来解释!

第一张表是

  

TB_USER(ID,ID_FATHER,左/右树位置)

用户可以销售产品!因此,当他们出售他们赚取积分。然后,第二个表是

  

TB_SELL(ID_USER,ID_PRODUCT,POINT)

因此,我希望在二进制模型树中以下面的每个客户端的点的报告格式查看。如何在这种搜索中设计这些表格以使我的生活更轻松?我将永远让我的soons达到9级。

我知道通过程序我可以解决这个问题,但我想知道一个优雅而简单的解决方案。

谢谢

1 个答案:

答案 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