【Oracle】建立关联三个表的视图

简介: 【Oracle】建立关联三个表的视图

一、背景

在我们的业务中,经常会有这样的需求:将某对象集合以列表的形式展示,但被展示的对象信息可能来自多个表,这时候,我们为了减少在系统对数据的处理,提高查询速度,会通过建立视图来解决这类问题。



二、具体代码

关联的三个表为:T_A,T_B,T_C

CREATE VIEW V_AGREEMENT_INFO AS SELECT
  ID,
  ORG_ID,
  ID AS PRJ_ID,
  PRJ_NAME,
  (
    (
      SELECT
        TASK_AGREEMENT_NO
      FROM
        T_B
      WHERE
        T_B.PRJ_ID = T_A. ID
    )
  ) AS CONTRACT_NO,
  'TASK' AS CONTRACT_TYPE,
  PRJ_NAME AS CONTRACT_NAME
FROM
  T_A
UNION
  SELECT
    ID,
    ORG_ID,
    PRJ_ID,
    (
      SELECT
        PRJ_NAME
      FROM
        T_A
      WHERE
        T_C.PRJ_ID = T_A. ID
    ) AS PRJ_NAME,
    CONTRACT_NO,
    CONTRACT_TYPE,
    CONTRACT_NAME
  FROM
    T_C


三、注意

1、在建立视图之前,先确定页面需要的展示具体的字段,以及该字段具体来着那张表;

2、确定该视图主要来自哪几张表的信息;

3、某字段信息需要展示在页面上,但在第一个表中没用有,只有第二个表有。该字段信息如果是默认为某个值,可以这样写:

'TASK' AS CONTRACT_TYPE


如果该字段的信息是从关联的别的表查询而来,可以这样写:

(SELECT PRJ_NAME FROM T_PM_PRJ_INFO WHERE T_PM_OTHER_CONTR_INFO.PRJ_ID = T_PM_PRJ_INFO.ID) AS PRJ_NAME



AS前的select语句要加括号,相当于,以查询到的某条信息的值做该字段的值。

















相关文章
|
6月前
|
存储 Oracle 关系型数据库
9-3 Oracle数据字典和动态性能视图介绍
9-3 Oracle数据字典和动态性能视图介绍
|
3月前
|
Oracle 关系型数据库 数据库
Oracle查询优化-复制表的定义及数据
【1月更文挑战第5天】【1月更文挑战第14篇】在Oracle数据库中,复制表定义和复制表数据是两个常见的操作。
51 1
|
7月前
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
68 0
|
1月前
|
存储 SQL Oracle
Oracle系列十二:视图、记录、同义词、序列
Oracle系列十二:视图、记录、同义词、序列
|
1月前
|
存储 Oracle 关系型数据库
Oracle系列之七:表的创建与管理
Oracle系列之七:表的创建与管理
|
3月前
|
SQL Oracle 关系型数据库
Oracle-动态性能视图解读
Oracle-动态性能视图解读
87 0
|
4月前
|
Oracle 关系型数据库
Oracle - 表操作语句
Oracle - 表操作语句
25 0
|
6月前
|
Oracle 关系型数据库 Java
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
|
7月前
|
Oracle 关系型数据库 数据库
Oracle数据库 查询所有表
Oracle数据库 查询所有表
117 1
|
9月前
|
Oracle 关系型数据库 索引
Toad Oracle Parttion表分析
当一个数据表的数据达到几十亿笔的时候,对整个表做表分析代价较大。
74 0

推荐镜像

更多