SQL联合/加入查询

时间:2010-08-11 10:07:04

标签: sql join db2 union

我有一个用户个人资料表,其中包含User NameManager列以及许多其他字段,例如Amount

示例记录:

User    Manager  Amount
A       B       100
x       y       200
B       C       300
M       N       800
C       D       500
P       Q       1000
D       E       1000

我想获得如下结果:

User    Manager Amount
A       B       100
B       C       300
C       D       500
D       E       1000

基本上,我只想以级联方式显示结果,以便获取所有行,直到找到用户层次结构中的所有管理器。有人可以帮忙吗?

============

更新

我设法使用以下查询解决了问题:

WITH rec(c1, c2)
AS (SELECT c1, c2 FROM table WHERE c2 = 'A'
UNION ALL
SELECT table.c1, table.c2 FROM table, rec WHERE table.c2 = rec.c2)
SELECT c1, c2 FROM rec

感谢您的帮助。 ABHI。

1 个答案:

答案 0 :(得分:1)

没有用于执行此操作的“标准”sql,但是大多数数据库扩展SQL以具有这些选项。

在Oracle中,您可以执行以下操作:

SELECT USER, Manager, Amount FROM employees CONNECT BY PRIOR USER = Manager;

请看一些例子: http://www.ibm.com/developerworks/data/library/techarticle/dm-0510rielau/ 对于db2示例