【发布时间】:2012-05-01 03:15:05
【问题描述】:
我正在尝试实现以下结果(第一行是标题)
Level 1 | Level 2 | Level 3 | Level 4 | Person
Technicals | Development | Software | Team leader | Eric
Technicals | Development | Software | Team leader | Steven
Technicals | Development | Software | Team leader | Jana
我该怎么做?我尝试使用以下代码。第一部分是创建工作正常的层次结构。第二部分是有上面提到的表格中的日期是一件相当痛苦的事情。
SELECT * FROM ( /* level2 */
SELECT * FROM ( /* level1 */
SELECT * FROM arc.localnode /*create hierarchy */
WHERE tree_id = 2408362
CONNECT BY PRIOR node_id = parent_id
START WITH parent_id IS NULL ) l1node
LEFT JOIN names on l1node.prent_id = names.name_id ) l2node
在这一点上,我很迷茫。一点指导和建议会很有帮助:-)
有两张桌子。第一个表有这样的数据:
NODE_ID | PREV_ID | NEXT_ID | PARENT_ID
1421864 3482917 1421768
3482981 3482917 1421866 1421768
3482911 3060402 3482913 1421768
3482917 1421864 3482981 1421768
这很复杂,因为它处于层次结构中。所以很明显,一个 PARENT_ID 可以是其他一些 PARENT_ID 的 NODE_ID。同样,parent_ID 可以是 PREV_ID 和 NEXT_ID。
名称与 name_id 位于单独的表中。该表中的名称ID类似于层次结构中主表的NODE_ID。
【问题讨论】:
-
你的表结构和数据是什么样的?这将有助于开发必要的查询。
-
更好,但仍不完全清楚。你看过
CONNECT_BY_ROOT吗?我想这可能就是你要找的那块。 -
我猜如果您只处理一张表,CONNECT_BY_ROOT 就可以工作。这里我有两张桌子,这让事情有点棘手
-
你展示一个完整的例子怎么样?给出两个表中的数据和预期的结果。说明您尝试过的内容、遇到的问题以及缺少的内容。
-
我在这里上传了文件: www.thebombercommand.info/misc/names.sql(名称表) www.thebombercommand.info/misc/codes.sql(代码表) 他们有数据也是。
标签: oracle oracle10g oracle9i plsqldeveloper