【发布时间】:2011-11-29 19:35:39
【问题描述】:
我有一个 MS-access 数据库,其中包含以下列
用户名(主键)
用户名
Userparent(这只是当前用户老板的用户的用户ID)
userlevel(这是当前用户在层次结构中的位置)
只有 3 个级别。例如,如果 Tom and Jerry 为 Bob 工作,而 bob 和 bill 为 Steve 工作,那么表中的数据将如下所示:
Userid ,Username,Userparent ,userLevel(这些是col headers)
1, 史蒂夫, 0, 1
2,鲍勃,1、2
3, 汤姆, 2, 3
4、杰瑞、2、3
5、比尔、1、2
我需要在 MS-Access 2003 中使用 SQL 查询将数据排列在一个新表中,该表将具有 3 列。一级,二级,三级。并且子级别的员工将出现在更高级别的正下方。像这样。
Level1,Level2,Level3(这些是 col 标题)
史蒂夫,空,空
空,鲍勃,空
空,空,汤姆
空,空,杰里
null,Bill,null
由于访问不支持递归查询,我被卡住了。你能帮帮我吗?提前非常感谢
更新
经过一个小时的尝试,我最接近的方法是使用这个 SQL 查询:
Select y.Level1, x.Level2, x.Level3
FROM
(Select ID, Empname as Level1 from Table1 where level=1)y
right outer join
(select b.FirstLevelID, b.Level2, a.Level3 from
(select ParentID as SecondLevelID, Empname as Level3 from Table1 where level = 3)a
right outer Join
(select ParentID as FirstLevelID, ID, Empname as Level2 from Table1 where level = 2) b
on a.SecondLevelID = b.ID)x
ON y.ID = x.FirstLevelID
这样显示结果,
Level1、level2、level3(这些是标题)
史蒂夫,鲍勃,杰瑞
史蒂夫,鲍勃,汤姆
史蒂夫,比尔,空
这可以正确建立关系,但如果我可以多次删除 1 级和 2 级名称的重新出现,可能会更好。任何人都可以修改查询来实现吗?
【问题讨论】:
-
显示一次名称是一个演示问题,我认为不是查询问题。