父辈a,b用left join出来了,儿辈也用a,b用left join出来了,重点来了,父辈要单独一行,然后儿辈要和父辈关联

nimeide1234567890 2025-11-15 12:11:21

目前有两张表:

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数据库

 

...全文
157 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mynameisking 01-22 16:04
  • 打赏
  • 举报
回复

一张表就可以,没必须搞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
上面只是提供一个大概得思路,代码没写全

5,934

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧