`
Franciswmf
  • 浏览: 796930 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

oracle中单字段存在1个或2个关联id时的查询sql

 
阅读更多
//上午值班人数为1人或2人时,查出值班信息和个人信息
select 
b.contact as mContact,b.email as mEmail,
c.contact as m2Contact,c.email as m2Email,
t.* from(
select
substr(a.morning_people_ids,0,instr(a.morning_people_ids,',',1,1)-1) as amId,
substr(a.morning_people_ids,instr(a.morning_people_ids,',',1,1)+1) as bmId,
a.*
from tb_duty a 
) t,
tb_duty_person_info b,
tb_duty_person_info c
where 1=1 and
nvl2(t.amId,t.amId,t.bmId)=b.person_id 
and t.bmId=c.person_id 
and t.dscd='340100' and t.unit_id=4 
and t.day0='2015-08-06'


//整个8月的
select 
m1.person_name as mName,
m1.contact as mContact,m1.email as mEmail,
m2.person_name as m2Name,
m2.contact as m2Contact,m2.email as m2Email,
a1.person_name as aName,
a1.contact as aContact,a1.email as aEmail,
a2.person_name as a2Name,
a2.contact as a2Contact,a2.email as a2Email,
e1.person_name as eName,
e1.contact as eContact,e1.email as eEmail,
e2.person_name as e2Name,
e2.contact as e2Contact,e2.email as e2Email,
l1.person_name as lName,
l1.contact as lContact,l1.email as lEmail,
l2.person_name as l2Name,
l2.contact as l2Contact,l2.email as l2Email,
t.week_day,
t.flag,
t.day0
 from(
select
substr(a.morning_people_ids,0,instr(a.morning_people_ids,',',1,1)-1) as mId,
substr(a.morning_people_ids,instr(a.morning_people_ids,',',1,1)+1) as m2Id,

substr(a.afternoon_people_ids,0,instr(a.afternoon_people_ids,',',1,1)-1) as aId,
substr(a.afternoon_people_ids,instr(a.afternoon_people_ids,',',1,1)+1) as a2Id,

substr(a.evening_people_ids,0,instr(a.evening_people_ids,',',1,1)-1) as eId,
substr(a.evening_people_ids,instr(a.evening_people_ids,',',1,1)+1) as e2Id,

substr(a.leader_ids,0,instr(a.leader_ids,',',1,1)-1) as lId,
substr(a.leader_ids,instr(a.leader_ids,',',1,1)+1) as l2Id,

a.*
from tb_duty a 
) t,
tb_duty_person_info m1,
tb_duty_person_info m2,
tb_duty_person_info a1,
tb_duty_person_info a2,
tb_duty_person_info e1,
tb_duty_person_info e2,
tb_duty_person_info l1,
tb_duty_person_info l2
where 1=1 
and
nvl2(t.mId,t.mId,t.m2Id)=m1.person_id 
and t.m2Id=m2.person_id 
and
nvl2(t.aId,t.aId,t.a2Id)=a1.person_id 
and t.a2Id=a2.person_id 
and
nvl2(t.eId,t.eId,t.e2Id)=e1.person_id 
and t.e2Id=e2.person_id 
and
nvl2(t.lId,t.lId,t.l2Id)=l1.person_id 
and t.l2Id=l2.person_id 
and t.dscd='340100' and t.unit_id=4 
and to_char(to_date(t.day0,'yyyy-mm-dd'),'yyyy-mm')='2015-08'

附:
//查询tb_duty_person_info第11-20条记录(根据person_id排序):
   //0.031秒
   select a.* from (
   select rownum rn ,b.* from tb_duty_person_info b  where rownum<21 order by b.person_id
   ) a 
   where a.rn>10;
   //0.047秒
      select a.* from (
   select rownum rn ,b.* from tb_duty_person_info b order by b.person_id
   ) a 
   where a.rn>10 and rn<21 ;

分享到:
评论

相关推荐

    SQL Server中单引号的两种处理技巧

    在SQL Server中,单引号(')是一个特殊字符,用于定义字符串常量。当在构建动态SQL语句时,如果查询条件中的变量包含了单引号,不进行特殊处理会导致SQL语法错误。以下是对标题和描述中所述知识点的详细解释: 1. ...

    oracle 字段查询

    查询oracle数据库中单表中所有字段名

    浅谈oracle中单引号转义

    1.从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。  SQL&gt; select '''' result from dual; RESULT ------ ' 第二个单引号被作为转义符,第三个单引号被转义,可将sql写成这样更...

    SQL中存储过程中SQL语句的单引号和双引号问题[总结].pdf

    在 SQL 中,单引号和双引号的问题是一个常见的混淆点,特别是在存储过程中编写 SQL 语句时。下面将对此问题进行详细的解释和总结。 一、单引号和双引号的基本概念 在 SQL 中,单引号(')和双引号(")都是用来...

    sql语句中单引号,双引号的处理方法

    在SQL语句中,单引号和双引号的处理方式是至关重要的,尤其是在处理字符串、数字、日期和布尔值时。以下是对SQL语句中单引号和双引号处理方法的详细解释: 1. **插入字符串型数据**: 当你需要插入字符串类型的...

    CSDN+Oracle版精华帖荟萃

    2. ORA-00904标识符无效:这是Oracle数据库中的一个常见错误,当SQL语句中使用了无效的标识符时,会引发此错误。解决这个问题通常需要检查SQL语句中的对象名(如表名、列名)是否拼写正确,以及是否在正确的模式...

    10.ESQL/C中单记录的检索和查询.doc

    ### ESQL/C中单记录的检索和查询 #### 一、概述 在INFORMIX-ESQL/C应用开发中,单记录的检索和查询是非常重要的基础技能之一。本章将重点介绍如何使用`SELECT`语句来实现这一功能。通过学习本章内容,您将能够掌握...

    CSDN Oracle 版精华帖荟萃

    2. ORA-00904标识符无效:这通常是Oracle数据库中出现的一种错误,表明在语句中使用了一个无效的标识符,比如错误的列名、表名或对象名。解决这类问题通常需要核对数据库对象的名称是否正确,并确保SQL语句符合...

    使用toad导出oracle数据库某个或多个表中的数据.pdf

    以下是如何使用Toad导出Oracle数据库中单个或多个表的数据的详细步骤和相关知识。 **一、导出单个数据表中的数据** 1. 首先,启动Toad for Oracle并打开Schema窗口,这个窗口显示了数据库中的所有对象,包括表、...

    php中单个数据库字段多列显示(单字段分页、横向输出)

    1. 首先,使用LIMIT子句进行第一次查询,获取一定数量的结果。这将作为我们横向输出的起始点。 2. 确定总记录数,并根据每行需要显示的列数(本例中为12列),计算总行数。 3. 使用for循环来控制总行数。在每次循环...

    Java中单表和多表级联的增删改查

    - 当两个或更多表之间存在关联时,例如一对多、多对一或多对多关系,级联操作会涉及到一个表的操作导致另一个表的相关数据也发生变化。例如,删除一个用户可能需要同时删除与之相关的所有订单。 - Hibernate等ORM...

    使用toad导出oracle数据库某个或多个表中的数据.docx

    本文将详细介绍如何使用Toad导出Oracle数据库中单个或多个表的数据。 ### 导出单个数据表中的数据 1. 首先,启动Toad for Oracle并连接到目标数据库。在Schema窗口中,你可以查看到所有数据库对象,包括表、视图、...

    sql语句中单引号嵌套问题(一定要避免直接嵌套)

    在SQL语句中,单引号的嵌套和转义是一个常见的问题,特别是在处理字符串时。这是因为SQL使用单引号来定义字符串的开始和结束。当你需要在字符串内包含一个单引号时,直接嵌套单引号会导致语法错误。在标题和描述中...

    altium中单个元器件的安全间距设置

    在电路板设计中,元器件的安全间距设置是一个关键步骤,它确保电路板上的元器件在制造和使用过程中不会发生短路或干扰。安全间距不仅涉及到电气性能的稳定,也关乎到产品的安全性。 在Altium Designer中,设置单个...

    MS-SQL Server 中单引号的两种处理方法

    我们创建了一个示例项目,包括一个窗体(Form1),两个命令按钮,一个 MSFlexGrid,名称分别为:Command1,Command2,MSFlexGrid1,一个 COMBOX(COMBO1),它的内容预先设定为“Paolo''f“、“Paolo'f“。...

    VC++中单个键盘按键的响应

    该工程主要实现对键盘单个按键的响应,工程目录中还附上了一个名为《配套文档-VC单个键盘按键的响应.pdf》的文档,对VC++中单个键盘按键的响应进行详细的说明,其中包含了作者为你精心准备的每个键盘按键对应的十...

    3.2.4NC65单据字段参照时多选开发分享.docx

    在NC65单据字段参照时,多选开发是一个常见的需求,特别是在物料编码参照时,需要支持多选,以满足业务需求。下面将详细介绍NC65单据字段参照时多选开发的实现方法。 首先,需要在物料编码的编辑前事件中,将物料...

    Java多线程编程环境中单例模式的实现

    然而,这种方式可能会导致资源浪费,特别是当单例对象的创建非常耗时或耗资源时,如果程序运行过程中从未使用过这个单例对象,那么它的创建就会显得没有必要。 为了解决这个问题,我们可以采用**懒汉式**的方法,即...

Global site tag (gtag.js) - Google Analytics