select公司列表的时候如何增加级次字段?

QQ截图20191120191330.jpg


用fofantasy的代码出现计算异常,请问是什么原因???

QQ截图20191123230209.png

我把我的表结构及数据附上,请高手分析一下原因

基本情况表.xls

查询语句代码是这样写:

SELECT 

序号,本企业代码,上级企业代码,单位简称,levels AS 企业级别

FROM (SELECT 序号,本企业代码,上级企业代码,单位简称,

@le:= IF(上级企业代码 = 0 ,0,IF( LOCATE( CONCAT('|',上级企业代码,':'),@pathlevel)> 0, SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',上级企业代码,':'),-1),'|',1) +1,@le+1) ) levels, 

@pathlevel:= CONCAT(@pathlevel,'|',本企业代码,':', @le ,'|') pathlevel, 

@pathall:=CONCAT(@pathall,'|',本企业代码,':', @pathnodes ,'|') pathall 

FROM 基本情况表, 

(SELECT @le:=0,@pathlevel:='', @pathall:='',@pathnodes:='') vv

ORDER BY 上级企业代码,本企业代码

) src

ORDER BY 序号


nhb2318 发布于 2019-11-20 19:14 (编辑于 2019-11-23 23:08)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
nhb2318Lv4初级互助
发布于2019-11-25 20:04

我已经自己解决了,不用SQL,因为SQL计算要费好大时间,尤其是公司超过300条的时候,费劲!

我用FR自带的树数据集就解决了,级次也可以弄出来,谢谢大家了

虽然还没有解决级次排序的问题

最佳回答
0
fofantasyLv5初级互助
发布于2019-11-20 19:29(编辑于 2019-11-25 20:32)
  • nhb2318 nhb2318(提问者) 你给的例子是MSsql,我的是mysql
    2019-11-21 19:59 
  • nhb2318 nhb2318(提问者) 回复 fofantasy 不能直接递归?这个难度太大 能不能直接给我写一下? 里面那不多@是什么意思?
    2019-11-21 20:15 
  • nhb2318 nhb2318(提问者) 回复 fofantasy 能帮我写写吗? 我参照那个写了一下,结果发现居然还有20级的呢,实际上才有4级 我查不到原因,到底是哪里出现问题了
    2019-11-22 00:17 
  • nhb2318 nhb2318(提问者) 我运行的时候出现异常,找不到原因,请帮忙看一下
    2019-11-23 23:09 
  • nhb2318 nhb2318(提问者) 我更新了问题,把数据表上传了,为什么我的这些数据就会出现计算错误?有BUG吗?
    2019-11-24 09:25 
最佳回答
0
黄源Lv6中级互助
发布于2019-11-21 08:46

看库吧 oracle用 start with connect by


select *  from (select t.fd_id,t.fd_name,t.fd_no,level leaf,(select fd_name from sys_org_element where fd_id=nvl(t.fd_parentorgid,t.fd_parentid)) topname from sys_org_element t

where t.fd_org_type in (1,2) and t.fd_is_available=1 and t.fd_is_abandon=0 and t.fd_is_business=1 and t.fd_id<>'3'

start with t.fd_id in('1','2')

connect by t.fd_parentid=prior t.fd_id)t


  • 2关注人数
  • 760浏览人数
  • 最后回答于:2019-11-25 20:32
    请选择关闭问题的原因
    确定 取消
    返回顶部