oracle查询计划信息,如何分隔关联查询?

现要查询计划表信息,和组织权限相关联,目前sql
T_TRAIN_PLAN 表结构
图片说明

图片说明
t_employee_organization_ref表结构
图片说明
图片说明

 select *
  from (select distinct t.plan_name,
                        t.plan_code,
                        t.begin_date,
                        t.end_date,
                        t.id,
                        t.status,
                        t.verify,
                        t.isDel,
                        ROWNUM RN
          from (select t.plan_name,
                       t.plan_code,
                       t.begin_date,
                       t.end_date,
                       t.id,
                       t.status,
                       t.verify,
                       row_number() over(order by create_time desc) as seqnum,
                       (select count(1)
                          from t_train_session ts
                         where ts.plan_id = t.id
                           and ts.train_begin_time < sysdate) isDel
                  FROM (SELECT *
                          FROM (SELECT t.store_id,
                                       t.plan_name,
                                       t.plan_code,
                                       t.begin_date,
                                       t.end_date,
                                       t.id,
                                       t.status,
                                       t.verify,
                                       create_time,
                                       t.remark  mark
                                  FROM T_TRAIN_PLAN t
                                 where t.status in ('0', '2') and t.remark is not null ) t,
                               t_employee_organization_ref a 
                         where t.store_id = a.unit_id  
                           and a.employee_code = 'admin') t) t
         where seqnum <=10
         order by t.begin_date desc)
 where rn > 0;


 抽取主体也就是

  SELECT *
                          FROM (SELECT t.store_id,
                                       t.plan_name,
                                       t.plan_code,
                                       t.begin_date,
                                       t.end_date,
                                       t.id,
                                       t.status,
                                       t.verify,
                                       create_time,
                                       t.remark  mark
                                  FROM T_TRAIN_PLAN t
                                 where t.status in ('0', '2') and t.remark is not null ) t,
                               t_employee_organization_ref a 
                         where t.store_id = a.unit_id  
                           and a.employee_code = 'admin'    

目前的业务是,当创建计划时,Store_id可以选择多个, 保存的时候,如果store_id是多个,则保存在了remark字段中,如果只是一个保存在store_id字段中, 那么问题
来了,如果store_id是多个,已逗号分隔的形式保存在了remark字段中,我怎么和t_employee_organization_ref 组织权限表关联啊? 并且查找出计划信息。。。

1

3个回答

SELECT t.*
FROM t_train_plan t
INNER JOIN t_employee_organization_ref a
ON (','|| t.remark ||',' LIKE '%,'|| a.unit_id ||',%'
OR t.store_id = a.unit_id)
AND t.status IN ('0', '2')
AND a.employee_code = 'admin';

--REMARK多个store_id,一条t_train_plan记录在结果中可能有多条
--语句未实际测试
--另外,贴中语句嵌套层次太多,建议尽量避免子查询!

0
apbbbbb
旋转的钢笔 谢谢!
大约一年之前 回复

没用过Oracle,用SQLserver多,一个公司总会有相似,试试用逗号或者外链接

0

建议你换个 角度来分析这个问题。怎么能用这么多的嵌套呢。建议你优化下sql语句吧。 不妨你你的这个表和需求发出来,让大家帮你出sql 也可以。现在的这个嵌套太多,在怎么优化 效率也难以提上去。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

1
整理oracle中procedure的所有方法名和参数
1
请问sqlsever 中left(TERM,len(TERM)-1) >=12在oracle中要怎么写呢
1
Winfrom程序连接Oracle引发异常,求解决方案!
1
使用游标查询部门为10的员工,并为其增加1000元,我这里测试反馈数据不正确,麻烦请教感谢
0
oracle数据库表内数据设置 菜鸟跪求
1
本地oracle每次登录都报错(ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exit)
1
mysql的两条语句,但运行后查询结构有时候会不一样。大神帮我看一下两句话的条件有什么差别把0 0
2
oracle 运行SQL乱码?求解
2
sql语句在oracle里可以运行,在程序里运行报错ora-00933
0
oracle18c安装时提示无法创建 oracle Oracle 主目录用户
4
虚拟机CentOS7.0 1406安装Oracle 11G依赖组件failed
2
mybatis。要求查询结果返回一个Map,Map的key为两个字段拼接的值,value为整条记录对应的对象
4
oracle查询,条件中如果某些sum不等于0怎么写
1
关于一张表内多个时间字段关联问题下面粘上要查询的表结构及查询说明如果没有方法的话请留言这问题无解
2
oracle如何将已有的日期数据从年月日时分秒格式更新为时分秒格式
1
oracle 报错ORA-00937: not a single-group group function
1
每次使用oracle数据库时,服务启动了,每次都报错ORA-01034: ORACLE not available
1
ORACLE的数据查询性能问题
0
安装八爪鱼和oracle时出现下面这个提示,要怎么解决?
1
oracle mybatis一次执行多条sql,提示SQL命令未正确结束