access 查询设计,树状查询。用sql语句如何实现?

各位大神好,请教个问题。现在我的数据库分为N个层级,每两个相邻层级之间有一个关系表,格式大概类似下图:层级1到层级2的关系层级2到层级3的关系。以上为示意图,每个层级还有... 各位大神好,请教个问题。
现在我的数据库分为N个层级,每两个相邻层级之间有一个关系表,格式大概类似下图:
层级1到层级2的关系

层级2到层级3的关系。

以上为示意图,每个层级还有其他信息,有很多层。现在想把所有的数据查询到一张表上,做成后的结构类似于:

每个层级的子层级都列好后再列下一个层级。
这种用Sql语句好写么? VBA的话没学过,希望各位能帮帮忙,看看如何解决最简洁。多谢了!
展开
 我来答
嗬哟嗬哟拔萝卜
2015-08-03 · 超过74用户采纳过TA的回答
知道小有建树答主
回答量:164
采纳率:100%
帮助的人:99.9万
展开全部
假设 有表 c0,c1,c2
SELECT * INTO #t1 FROM (SELECT #c0.id0 , #c1.id1 ,#c2.id2, row_number() OVER(ORDER BY #c0.id0) AS line FROM #c0
LEFT JOIN #c1 ON #c0.id0=#c1.id0
LEFT JOIN #c2 ON #c1.id1=#c2.id1) AS a1

CREATE TABLE #t2(
id
)

INSERT INTO #t2 (id) SELECT id0 FROM #t1 GROUP by id0
INSERT INTO #t2 (id) SELECT id1 FROM #t1 GROUP by id1
INSERT INTO #t2 (id) SELECT id2 FROM #t1 GROUP by id2

SELECT * from #t2 ORDER BY id
追问
不好意思,刚学。不太懂。
能稍微写个注释吗?
尤其是 (SELECT #c0.id0 , #c1.id1 ,#c2.id2, row_number() OVER(ORDER BY #c0.id0) 完全晕了。
整体的结构是什么,能稍微说一下吗。麻烦啦!!!
追答
#c0
id0 note
#c1
id1 id0 note
#c2
id2,id1 note

(SELECT #c0.id0 , #c1.id1 ,#c2.id2, row_number() OVER(ORDER BY #c0.id0) AS line FROM #c0
LEFT JOIN #c1 ON #c0.id0=#c1.id0
LEFT JOIN #c2 ON #c1.id1=#c2.id1) AS a1
可以改成
(SELECT #c0.id0 , #c1.id1 ,#c2.id2 FROM #c0
LEFT JOIN #c1 ON #c0.id0=#c1.id0
LEFT JOIN #c2 ON #c1.id1=#c2.id1) AS a1
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式