在我看来,oracle的视图就是用于将多个表的关联查询结果映射成【临时表】,视图与系统表中的数据是实时对应的。

我们可以像操作表的查询一样来操作视图查询。

视图写法:

CREATE OR REPLACE FORCE VIEW  V_TEM
(
ID,
NAME
)
AS
SELECT ID,NAME FROM TABLE

项目中的一个案例,将一个自关联的结构表(行转多列)体现组织结构:市-区县-网格-乡镇-渠道

用到的知识点:

1、SYS_CONNECT_BY_PATH(字段,间隔符)    示例:SYS_CONNECT_BY_PATH(ID, '|')

2、SUBSTR()

3、INSTR()

备注:两函数SUBSTR()INSTR()对待字符串的位置的索引是从1开始的(填写0和1都是代表从第1个位置开始)

sql代码:

DROP VIEW TLS.V_CHANNEL_PATH;

CREATE OR REPLACE FORCE VIEW TLS.V_CHANNEL_PATH
(
ID,
PARENT_ID,
NAME,
ID_LEVEL,
TYPE,
IN_USE,
STATUS_TIME,
LEVEL_ID,
BANK_NAME,
ACCOUNT_NAME,
ACCOUNT_NO,
GROUP_ID,
CLASS,
CHANNEL_TEL,
QX_CHANNEL_ID,
PQ_CHANNEL_ID,
XZ_CHANNEL_ID,
QX_CHANNEL_NAME,
PQ_CHANNEL_NAME,
XZ_CHANNEL_NAME
)
AS
SELECT ID,
a.parent_id,
NAME,
id_level,
TYPE,
in_use,
status_time,
level_id,
bank_name,
account_name,
account_no,
GROUP_ID,
CLASS,
channel_tel,
SUBSTR (a.path_id,
INSTR (path_id,
'|',
1,
1)
+ 1,
INSTR (path_id,
'|',
1,
2)
- INSTR (path_id,
'|',
1,
1)
- 1)
qx_channel_id,
SUBSTR (a.path_id,
INSTR (path_id,
'|',
1,
2)
+ 1,
INSTR (path_id,
'|',
1,
3)
- INSTR (path_id,
'|',
1,
2)
- 1)
pq_channel_id,
SUBSTR (a.path_id,
INSTR (path_id,
'|',
1,
3)
+ 1,
INSTR (path_id,
'|',
1,
4)
- INSTR (path_id,
'|',
1,
3)
- 1)
xz_channel_id,
SUBSTR (a.path_name,
INSTR (path_name,
'|',
1,
1)
+ 1,
INSTR (path_name,
'|',
1,
2)
- INSTR (path_name,
'|',
1,
1)
- 1)
qx_channel_name,
SUBSTR (a.path_name,
INSTR (path_name,
'|',
1,
2)
+ 1,
INSTR (path_name,
'|',
1,
3)
- INSTR (path_name,
'|',
1,
2)
- 1)
pq_channel_name,
SUBSTR (a.path_name,
INSTR (path_name,
'|',
1,
3)
+ 1,
INSTR (path_name,
'|',
1,
4)
- INSTR (path_name,
'|',
1,
3)
- 1)
xz_channel_name
FROM ( SELECT a.*,
SUBSTR (SYS_CONNECT_BY_PATH (ID, '|'), 2) || '|' path_id,
SUBSTR (SYS_CONNECT_BY_PATH (NAME, '|'), 2) || '|'
path_name
FROM tl_channel a
START WITH ID = 1
CONNECT BY PRIOR ID = parent_id) a;

最新文章

  1. AutoMapper用法
  2. [转载]MySQL5.5 配置文件 my.ini 1067错误
  3. 【HDU】3853 LOOPS
  4. 鼠标滚轮控制侧边div上下翻动效果
  5. mongodb配置及简单示例
  6. 内容模块PC标签调用说明
  7. bootstrap-fileinput 图片上传
  8. Luence简单实现1
  9. PHP初学留神(一)
  10. Android 6.0 反射 newInstance
  11. Redis集合相关命令
  12. md5校验问题
  13. 201521123070 《JAVA程序设计》第1周学习总结
  14. Windows系统下 Python(Anaconda)的 Dlib库 的安装
  15. BZOJ_1003_[ZJOI2006]物流运输_最短路+dp
  16. Spring IOC容器基本原理
  17. @JsonSerialize的使用
  18. Go hashcode 输入一个字符串,得到一个唯一标识码
  19. hdu 5009 离散化
  20. Object-c SQLite 数据库内存溢出问题

热门文章

  1. java post请求的表单提交和json提交简单小结
  2. 【代码笔记】iOS-自定义switch
  3. jquery中ajax的dataType的各种属性含义
  4. systemd 之 journalctl
  5. Cisco DHCP 配置方法
  6. Ctrl+Alt+F1~F6
  7. 【转】Nginx学习---Nginx&&Redis&&hcache三层缓存架构总结
  8. SQLite简单使用记录
  9. MySQL C API 访问 MySQL 示例
  10. [技术] OIer的C++标准库 : STL入门