2016年要学会用存储过程向关联的几张表里面插入数据。
2016-02-02 14:25
351 查看
第一次操作多张相关联的数据库表,傻傻的去做一张一张的操作。结果发现写sql语句去Low数据,发现怎么都Low不出来。事后(也就是现在,我先笑一笑)
向6张表里插入数据:
insert into DE_CONTRACT_INFO (id,RECORD_TYPE,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS) values(1,1,1,sysdate,sysdate,'pd','pd1','a');
insert into de_external_ds (id,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_HARD_CHECK (ID,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_ONLINE_TRIGGERS(ID,ID_DE_RULE_CHECK_REQ,STATUS)values(1,1,'a');
insert into DE_ROUND (ID,ID_DE_RULE_CHECK_REQ,ROUND,RAND1,RAND2,RAND3,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,1,1.1,1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_ROUND_RESULT(ID,ID_DE_ROUND,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_RULE_CHECK_RESULT (ID,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS) values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into De_Rule_Check_Req(ID,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(12,1,sysdate,sysdate,'pd','pd1','a');
insert into de_round_result (ID,ID_DE_ROUND) values(1,11);
查询6张表关联后的结果:
select r.ID
from de_rule_check_req rcr
left join DE_CONTRACT_INFO ci1
on (rcr.ID = ci1.ID_DE_RULE_CHECK_REQ and ci1.RECORD_TYPE = '1')
left join DE_CONTRACT_INFO ci2
on (rcr.ID = ci2.ID_DE_RULE_CHECK_REQ and ci2.RECORD_TYPE = '2')
left join DE_HARD_CHECK hc
on (hc.ID_DE_RULE_CHECK_REQ = rcr.ID)
left join DE_ONLINE_TRIGGERS ot
on (ot.ID_DE_RULE_CHECK_REQ = rcr.ID)
left join DE_EXTERNAL_DS ed
on (ed.ID_DE_RULE_CHECK_REQ = rcr.id)
left join DE_WORKFLOW_ACT wa
on (wa.ID_DE_RULE_CHECK_REQ = rcr.id)
left join DE_ROUND r
on (r.ID_DE_RULE_CHECK_REQ = rcr.ID and r.ROUND = 1)
left join (select rr1.*, d.ID_DE_RULE_CHECK_REQ id_rcr, d.id id_last_round
from de_round d, de_round_result rr1
where d.ID = rr1.ID_DE_ROUND(+)
and d.ROUND = 1 - 1) aa
on (aa.id_rcr = rcr.id)
where rcr.id_application = 504;
查询通过de之后返回的结果。
select * from de_round_result where id_de_round=503;
怎么都查不出来,结果就是,去问数据库工程师,说是要关联的插入数据才能够查出一张综合的表出来。逻辑嘛,很麻烦。现在暂时还不太了解,是用了存储过程。。。
向6张表里插入数据:
insert into DE_CONTRACT_INFO (id,RECORD_TYPE,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS) values(1,1,1,sysdate,sysdate,'pd','pd1','a');
insert into de_external_ds (id,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_HARD_CHECK (ID,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_ONLINE_TRIGGERS(ID,ID_DE_RULE_CHECK_REQ,STATUS)values(1,1,'a');
insert into DE_ROUND (ID,ID_DE_RULE_CHECK_REQ,ROUND,RAND1,RAND2,RAND3,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,1,1.1,1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_ROUND_RESULT(ID,ID_DE_ROUND,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into DE_RULE_CHECK_RESULT (ID,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS) values(1,1,sysdate,sysdate,'pd','pd1','a');
insert into De_Rule_Check_Req(ID,ID_DE_RULE_CHECK_REQ,CDATE,EDATE,CREATOR,EDITOR,STATUS)values(12,1,sysdate,sysdate,'pd','pd1','a');
insert into de_round_result (ID,ID_DE_ROUND) values(1,11);
查询6张表关联后的结果:
select r.ID
from de_rule_check_req rcr
left join DE_CONTRACT_INFO ci1
on (rcr.ID = ci1.ID_DE_RULE_CHECK_REQ and ci1.RECORD_TYPE = '1')
left join DE_CONTRACT_INFO ci2
on (rcr.ID = ci2.ID_DE_RULE_CHECK_REQ and ci2.RECORD_TYPE = '2')
left join DE_HARD_CHECK hc
on (hc.ID_DE_RULE_CHECK_REQ = rcr.ID)
left join DE_ONLINE_TRIGGERS ot
on (ot.ID_DE_RULE_CHECK_REQ = rcr.ID)
left join DE_EXTERNAL_DS ed
on (ed.ID_DE_RULE_CHECK_REQ = rcr.id)
left join DE_WORKFLOW_ACT wa
on (wa.ID_DE_RULE_CHECK_REQ = rcr.id)
left join DE_ROUND r
on (r.ID_DE_RULE_CHECK_REQ = rcr.ID and r.ROUND = 1)
left join (select rr1.*, d.ID_DE_RULE_CHECK_REQ id_rcr, d.id id_last_round
from de_round d, de_round_result rr1
where d.ID = rr1.ID_DE_ROUND(+)
and d.ROUND = 1 - 1) aa
on (aa.id_rcr = rcr.id)
where rcr.id_application = 504;
查询通过de之后返回的结果。
select * from de_round_result where id_de_round=503;
怎么都查不出来,结果就是,去问数据库工程师,说是要关联的插入数据才能够查出一张综合的表出来。逻辑嘛,很麻烦。现在暂时还不太了解,是用了存储过程。。。
相关文章推荐
- C和C++库中的排序函数——sort与qsort解析
- iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途
- RMQ算法
- Windows编程之COM组件
- Android日志系统驱动程序Logger源代码分析
- puppet之自定义fact(转载)
- Hive 3、Hive 的安装配置(本地derby模式)
- ROS 进阶学习笔记(12) - Communication with ROS through USART Serial Port
- 258 Add Digits
- Linux Shell常用技巧(六) sort uniq tar split
- redis(java)
- WC2016 挑战NPC
- uva1267 - Network
- 在listView适配器的内存优化给点击事件带来的麻烦
- [树状数组+上升子序列] HDU 3030 Increasing Speed Limits
- 【SCOI2013】【BZOJ3323】多项式的运算
- 四面体体积求法
- 视频播放的基本原理
- Linux Shell常用技巧(五) awk编程
- windows下用Eclipse编译运行android原生浏览器