清结算内部勾兑业务一个比较有意思的问题整理
2016-12-13 17:50
246 查看
有段时间没有在博客上发表过内容了,都写在了文档上了,有时间全都整理发表出来,可以让应聘Java高工的同学看下。
今天遇到一个比较有意思的事情给大家说下,有关清结算内部勾兑的事情,你看完之后估计就会学到很多东西,从业务上,技术上和设计方案上都会学到一些,到时候面试官问的时候完全可以拿出来回答面试官的问题(比如问:讲一个你参与设计过的事情?)
技术点:
(1)WMSYS.WM_CONCAT(‘’||'')
表: user
id name transno
1 张三 20
2 李四 20
3 王五 21
sql:select t.transno,WMSYS.WM_CONCAT(t.name||',') as data from user t where t.transno = '20';
结果:
transno data
20 张三,李四
注意 如果这样写sql:select t.transno,t.name|| as data from user t where t.transno = '20';
结果:
transno name
20 张三
20 李四
如果 接下来有一张表stu
是拿着上面sql产生的数据插入到stu表中 transno作为主键 那么用第一条sql就会报错 因为第一次主键是20 第一次再插入一个主键为20就违反了主键约束
(我这边的业务场景是内部勾兑差错表 的主键是平台流水号 即一个平台流水号对应一条内部勾兑差错记录)
(2)
t1 t2
COL1 COL2 COL2 COL3
1 A A A2
2 B B B2
3 C D D2
select t1.col1,t1.col2,t2.col3 from t1,t2 where t1.col2=t2.col2;
内连接 同inner join on
1 A A2
2 B B2
select t1.col1,t1.col2,t2.col3 from t1 left outer join t2 on (t1.col2=t2.col2);左外连接
1 A A2
2 B B2
3 C
select t1.col1,t1.col2,t2.col3 from t1 left join t2 on (t1.col2=t2.col2);
1 A A2
2 B B2
3 C
select t1.col1,t1.col2,t2.col3 from t1 right outer join t2 on (t1.col2=t2.col2);右外连接
1 A A2
2 B B2
D2
select t1.col1,t1.col2,t2.col3 from t1 right join t2 on (t1.col2=t2.col2);
1 A A2
2 B B2
D2
select t1.col1,t1.col2,t2.col3 from t1 full outer join t2 on (t1.col2=t2.col2);全外连接
1 A A2
2 B B2
描述一下:
情景:
集合1 记录a
集合2 记录b
关联字段 id
如 集合1 左外联 集合2
1内连接等同于关联查询
2外连接
(1)左外联 如果集合1中为空 则均为空 如果集合1中不为空 集合2为空 则显示为集合1+null(显示集合2的字段只是只为null)
(2)右外联 同理(1)
(3)全外联 集合1和集合2都有的数据都显示
业务逻辑:
(1)支付 查询支付表 数据格式 平台流水号+清算日期+集合(每一个元素都是一个支付交易)
(2)业务 同理(1)
(3)支付+业务
通过一个数据模型来描述
select 集合1 left join on 集合2 ,集合1 又是一个主单表 left join 业务表 on ,集合2 是一个主单表 left join 业务表 on
集合1如下
当主单表中数据不为空 业务表中数据为空时 则显示主单表数据+null 但由于一个where条件时间的限制 出现的效果是 null
(要理解这个sql 得需要嗅到这一点)
另外一个小的知识点
left join on and 条件1 where 条件
设计方案:
(1)原先
1有一个sql系统函数 效率比较慢
2sql比较长 效率比较低
(2)现在:
1去掉系统函数 拼接字符串 拿到程序中实现
2将长的sql写成几个简短的sql 分别获得集合1 集合2 然后在程序中获得集合3
两个方案的优缺点:
对于这次写博客最大的进步是:之前我只是以为写博客最大的目的是让自己反思 整理 总结,并不太关心读者是否能够看懂,现在我意识到能够说的或写的让读者可以看懂是自己对待写内容更深层次的理解,是更大的锻炼,加油boy,you can do it
今天遇到一个比较有意思的事情给大家说下,有关清结算内部勾兑的事情,你看完之后估计就会学到很多东西,从业务上,技术上和设计方案上都会学到一些,到时候面试官问的时候完全可以拿出来回答面试官的问题(比如问:讲一个你参与设计过的事情?)
技术点:
(1)WMSYS.WM_CONCAT(‘’||'')
表: user
id name transno
1 张三 20
2 李四 20
3 王五 21
sql:select t.transno,WMSYS.WM_CONCAT(t.name||',') as data from user t where t.transno = '20';
结果:
transno data
20 张三,李四
注意 如果这样写sql:select t.transno,t.name|| as data from user t where t.transno = '20';
结果:
transno name
20 张三
20 李四
如果 接下来有一张表stu
是拿着上面sql产生的数据插入到stu表中 transno作为主键 那么用第一条sql就会报错 因为第一次主键是20 第一次再插入一个主键为20就违反了主键约束
(我这边的业务场景是内部勾兑差错表 的主键是平台流水号 即一个平台流水号对应一条内部勾兑差错记录)
(2)
t1 t2
COL1 COL2 COL2 COL3
1 A A A2
2 B B B2
3 C D D2
select t1.col1,t1.col2,t2.col3 from t1,t2 where t1.col2=t2.col2;
内连接 同inner join on
1 A A2
2 B B2
select t1.col1,t1.col2,t2.col3 from t1 left outer join t2 on (t1.col2=t2.col2);左外连接
1 A A2
2 B B2
3 C
select t1.col1,t1.col2,t2.col3 from t1 left join t2 on (t1.col2=t2.col2);
1 A A2
2 B B2
3 C
select t1.col1,t1.col2,t2.col3 from t1 right outer join t2 on (t1.col2=t2.col2);右外连接
1 A A2
2 B B2
D2
select t1.col1,t1.col2,t2.col3 from t1 right join t2 on (t1.col2=t2.col2);
1 A A2
2 B B2
D2
select t1.col1,t1.col2,t2.col3 from t1 full outer join t2 on (t1.col2=t2.col2);全外连接
1 A A2
2 B B2
描述一下:
情景:
集合1 记录a
集合2 记录b
关联字段 id
如 集合1 左外联 集合2
1内连接等同于关联查询
2外连接
(1)左外联 如果集合1中为空 则均为空 如果集合1中不为空 集合2为空 则显示为集合1+null(显示集合2的字段只是只为null)
(2)右外联 同理(1)
(3)全外联 集合1和集合2都有的数据都显示
业务逻辑:
(1)支付 查询支付表 数据格式 平台流水号+清算日期+集合(每一个元素都是一个支付交易)
(2)业务 同理(1)
(3)支付+业务
通过一个数据模型来描述
select 集合1 left join on 集合2 ,集合1 又是一个主单表 left join 业务表 on ,集合2 是一个主单表 left join 业务表 on
集合1如下
当主单表中数据不为空 业务表中数据为空时 则显示主单表数据+null 但由于一个where条件时间的限制 出现的效果是 null
(要理解这个sql 得需要嗅到这一点)
另外一个小的知识点
left join on and 条件1 where 条件
设计方案:
(1)原先
1有一个sql系统函数 效率比较慢
2sql比较长 效率比较低
(2)现在:
1去掉系统函数 拼接字符串 拿到程序中实现
2将长的sql写成几个简短的sql 分别获得集合1 集合2 然后在程序中获得集合3
两个方案的优缺点:
对于这次写博客最大的进步是:之前我只是以为写博客最大的目的是让自己反思 整理 总结,并不太关心读者是否能够看懂,现在我意识到能够说的或写的让读者可以看懂是自己对待写内容更深层次的理解,是更大的锻炼,加油boy,you can do it
相关文章推荐
- 讨论一个比较有意思的业务需求
- 讨论一个比较有意思的业务需求
- 记一个比较有意思的bug,position绝对定位问题
- 遇到一个比较有意思的NIO问题!
- 一个比较有意思的C语言问题
- 如何比较Keras, TensorLayer, TFLearn ?——如果只是想玩玩深度学习,想快速上手 -- Keras 如果工作中需要解决内部问题,想快速见效果 -- TFLearn 或者 Tensorlayer 如果正式发布的产品和业务,自己设计网络模型,需要持续开发和维护 -- Tensorlayer
- 一个有意思的博弈问题
- 今天遇到的一个比较变态的问题
- 针对这一段时间ASP.NET版中比较集中突出的问题,我写了一个完整的页面,包含显示/修改/删除/添加/排序/合并/写文件/显示图片或文档,有详细代码注释
- 当生活比较迷茫的时候,我就会想起这样一个问题,人到底为了什么而活着?
- 看到论坛上的一个对于js this关键字的问题,比较有代表性
- javascrip setInterval 函数在一个对象内部的调用问题
- 内部服务器错误,HTTP 500的一个比较详细的解释
- 提一个比较不知道如何处理的问题?
- 同样一个问题的两种 java 实现代码 的比较
- 多线程学习中碰到的一个很有意思的问题
- [导入]ASP.NET 2.0 的内部变化+金山词霸遇到的一个问题
- 最近在使用sps类库过程中发现了一个让我比较疑惑的问题(有关items属性的)
- 还是一个动态生成列的问题,比较彻底的解决方法(MVP思归)
- 一个简单的数值比较问题