SQL多字段的关联及数据重新排列

Leo1734 2009-03-25 04:48:23
1、表A(C1,C2,……) 表B(t1,t2,t3,t4)
其中,表A c2字段和表B的t2,t3,t4都有可能关联,如果c2和t2关联,则c2不会和t3,t4关联,而且表B中肯定会有一个和c2配对。
这种情况该怎么用关联查询?

2、查出来的结果集是这样的
a b c d
-----------------------
1 2 3
1 2
1 2 3 4

如何将这个结果集重新组织成如下的格式:
a b c d
-----------------------
1 2 3
1 2
1 2 3 4
也就是靠右对齐,该怎么处理?

谢谢!
...全文
76 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoulehua 2009-03-25
  • 打赏
  • 举报
回复
来顶一顶。
Leo1734 2009-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
SQL code请给出表结构,测试数据,具体算法和结果,谢谢。
[/Quote]

表A
ID(PK) C1 C2
----------------------
1 a1 n
2 b2 m
3 d3 p

表B
t1(PK) t2 t3 t4 NAME
------------------------------------
1 a1 b1 d1 X
2 a2 b2 d2 Y
3 a3 b3 d3 Z
最后的结果集
C2 NAME
-----------------
n X
m Y
p Z

其中表A中的C1字段的值和表B中的t2,t3,t4都有可能关联
Leo1734 2009-03-25
  • 打赏
  • 举报
回复
1、表A(id pk,c1 varchar(30),c2 varchar(30)……)
表B(t1 pk,t2 varchar(30),t3 varchar(30)……)


2、查询的结果集是从一个自关联的表中查出来的,
[CODE=SQL]
表T(id,pid,name)
select a.name as aname,b.name as bname,c.name cname……
from t a
left join t b on a.pid = b.id
left join t c on b.pid = c.id
……
[/SQL]
级数不确定,目前最大到10级
也可直接查出来我想要的结果集,就是按根节点对齐

我用如下语句查询的时候不知道为什么有些记录的父节点不全。
[CODE=SQL]
表T(id,pid,name)
select a.name as aname,b.name as bname,c.name cname……
from t a
left join t b on a.id = b.pid
left join t c on b.id = c.pid
……
[/SQL]
ws_hgo 2009-03-25
  • 打赏
  • 举报
回复
不懂
帮顶
Zoezs 2009-03-25
  • 打赏
  • 举报
回复
.......
dawugui 2009-03-25
  • 打赏
  • 举报
回复
请给出表结构,测试数据,具体算法和结果,谢谢。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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