2015-02-06 112 views
1

我构建有pyramidbinary tree概念SQL Server项目...SQL建模金字塔或二叉树

我要去尝试使用一些表解释!

第一张表是

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

用户可以卖producs!所以当他们出售时,他们可以获得积分然后,第二表是

TB_SELL(ID_USER,ID_PRODUCT,POINT)

因此,我想在我下面的每个客户端的点的报告格式见二进制模式树。我怎样才能设计这些表格,让我的生活更轻松?我会永远让我的soons高达9层。

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

谢谢

+0

请在CTE的一些研究。你用什么报告工具来表示这个? SSRS? SSMS? – 2015-02-06 05:07:38

+1

您也可能希望对SQL Server中的hierarchyid数据类型进行圆顶研究。这可能会或可能不会有用。 – 2015-02-06 05:08:41

回答

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 
+1

适合我!韩国社交协会! – Marabita 2015-02-08 17:27:51