表结构:id  level  segm_name     parent_id
01  1      中国          null
02  2      广东          01
03  3      深圳          02
04  4      福田区        03
05  4      罗湖区        03
06  5      人民法院      04
07  5      会展中心      04
08  6      *楼*号办公室  06
09  6      *厅*展     07
.
.
.其中level为字段等级,parent_id 关联上一级id。
现有两个结构一样的表,由于Id的生成方式不一样,需要找出字段等级相同,关联的上一级的字段等级也相同的两个表的ID对照表!那个大神能提供一个思路想法或者脚本,跪求给力!!

解决方案 »

  1.   

    你的意思是?
    你的ID是自动生成的。。所以和你现在的ID没有关联上
    是不是这个意思?
    如果是这个意思那你可以找出你现在的ID是从哪一个开始的。然后再在你以前的基础上加几应该就可以关联正确了。
      

  2.   


    就是有两个结构一样的表,表中的segm_name和等级一样,但是Id不一样,现在就是要找出segm_name和等级一样并且上一级的segm_name和等级也一样的ID对照表。其中从六级到一级通过parent_id关联可以拼装成一个完整独立的地址。
      

  3.   

    如果只要ID对照表,Join一下不就可以了吗、select a.id, b.id
      from a, b
     where a.level = b.level
       and a.segm_name = b.segm_name
       and a.parent_id = b.parent_id
      

  4.   


    其实是两个结构一样的表,他们各自的ID生成机制不一样,但地址等级和字段是一样的。现在的目的是通过两个表的字段和等级找出这两个表的ID对照,也就是 表1_id  表2_id。但其中他们的上一级关联的字段和等级也要一样。
      

  5.   


    不好意思,可能是我描述的不够清楚。因为ID不一样,所以parent_id也不一样,无法通过parent_id直接关联。我现在是想了解如何通过parent_id来获得上一级的字段和等级的比较,然后得这要对比的ID对照。
      

  6.   

    --用下面的语句查出层次关系为path字段,然后通过比较path字段来设置id.
    select t.*, sys_connect_by_path(segm_name, '/') as path from t
    start with parent_id is null connect by prior id = parent_id;