oracle 判断一个字段是不是另一个字段的子集
oracle两张表,判断B表跟C表的关联
两张表  B(id , aid) C(id,aid)B 内容如下 id   aid                   
                1    3310401                                                                              
                2    3310201                                   
                3    33102                                        
C 内容如下 id   aid
                1    331040101
                2    331040102
                3    3310201
现在要B和C通过aid关联,条件是B表的aId (3310401) 跟c表的以(3310401)开头的数据关联,只是列举了三条还有更多,需求如此,高手帮下忙

解决方案 »

  1.   

    select b.*,c.*
    from b join c on instr(c.aid,b.aid)>0 
    不知道你具体想要什么样的结果
      

  2.   

    只截取前面的位数,最后2位不截取行不行?
    b.aid=substr(c.aid,1,length(c.aid)-2)
      

  3.   

    这两张表有好多字段,为了完成统计,需要统计出B的aid单位(是上级单位),c表中存的是b表aid单位下的子单位,我要完成的统计是b表aid单位以及下级单位的数据归于b,c中存的都是b的下级单位,不知道描述的是否清楚
      

  4.   

    这两张表有好多字段,为了完成统计,需要统计出B的aid单位(是上级单位),c表中存的是b表aid单位下的子单位,我要完成的统计是b表aid单位以及下级单位的数据归于b,c中存的都是b的下级单位,不知道描述的是否清楚
      

  5.   

    这两张表有好多字段,为了完成统计,需要统计出B的aid单位(是上级单位),c表中存的是b表aid单位下的子单位,我要完成的统计是b表aid单位以及下级单位的数据归于b,c中存的都是b的下级单位,不知道描述的是否清楚
    当b的aid和c的aid重复的时候,应该怎么归属?比如上面 c 中 aid 为3310201的,应该归属于 b 中的 2 还是 3 ?
      

  6.   

    这两张表有好多字段,为了完成统计,需要统计出B的aid单位(是上级单位),c表中存的是b表aid单位下的子单位,我要完成的统计是b表aid单位以及下级单位的数据归于b,c中存的都是b的下级单位,不知道描述的是否清楚
    当b的aid和c的aid重复的时候,应该怎么归属?比如上面 c 中 aid 为3310201的,应该归属于 b 中的 2 还是 3 ?
    那个是不存在的,我数据可能写的有问题
      

  7.   

    这两张表有好多字段,为了完成统计,需要统计出B的aid单位(是上级单位),c表中存的是b表aid单位下的子单位,我要完成的统计是b表aid单位以及下级单位的数据归于b,c中存的都是b的下级单位,不知道描述的是否清楚
    当b的aid和c的aid重复的时候,应该怎么归属?比如上面 c 中 aid 为3310201的,应该归属于 b 中的 2 还是 3 ?
    那个是不存在的,我数据可能写的有问题
    b表不会存在那种包含关系
      

  8.   

    那你试试这个能不能满足你的需求:
    select b.*,c.*
    from b,c
    where instr(c.aid,b.aid)>0 and b.aid<>c.aid
    对表中数据有要求,比如 B 中不能存在包含关系的数据~另外,对于,不存在下级单位的单位是否需要显示?
      

  9.   

    select b.id,b.aid,c.id,c.aid
    from b left outer join c on instr(c.aid,b.aid)>0 and c.aid<>b.aid
    至于优化,暂时还没想到好的办法……
      

  10.   

    select b.*,c.*
    from b,c  where c.aid like b.aid||'%';