5,934
社区成员
发帖
与我相关
我的任务
分享目前有两张表:
a表(族辈表)
id parentID type bh name age sex id2
1 0 1 '' 父辈 '' '' 0
2 0 2 '' 儿辈 '' '' 0
------------
b表(成员表)
id parentID type bh name age sex id2
1 1 '' 002 父亲 26 男 0
2 1 '' 003 二叔 27 女 0
3 2 '' 008 二叔的孩子1 29 女 2
4 2 '' 009 二叔的孩子2 30 女 2
5 2 '' 010 二叔的孩子3 31 男 2
6 2 '' 005 父亲的孩子1 29 女 1
7 2 '' 006 父亲的孩子2 30 女 1
8 2 '' 007 父亲的孩子3 31 男 1
---------------
想实现类似如下图的需求:

父辈a,b用left join出来了,儿辈也用a,b用left join出来了,重点来了,父辈要单独一行,然后儿辈要和父辈关联
b表的b.id2=b.id,这是儿辈和父辈关联条件
SQL SERVER 2000数据库
一张表就可以,没必须搞2张表,parentID永远指向上一级id号,你留空肯定不行。
逻辑简单一点就使用临时表 insert into #temp ..... from b_table where parentID=xxx
最后来个 select * from #temp order by parentID
或者写个存储过程循环也行
while eof
begin
declare @aa varchar
select @aa=parentID from b_table where parentID=@pid
if @aa>''
insert into #temp ..... from b_table where parentID=xxx
end
select * from #temp
上面只是提供一个大概得思路,代码没写全