【问题标题】:view on multiple tables查看多个表
【发布时间】:2013-01-11 19:59:09
【问题描述】:

我对来自 Object-Relational dtb 的 Lab 有点卡住了。我有这个层次结构:

SUPERTYPE EMPLOYEE_TYPE3
------------------------------
empno number(4)
ename varchar(10),
job varchar(9),
hiredate date,
sal number(7, 2),
deptno number(2)


SUBTYPE MANAGER_TYPE3
------------------------------
office varchar(6),
car varchar(10)


SUBTYPE SALESMAN_TYPE3
------------------------------
comm number(7, 2)


SUBTYPE STAFF_TYPE3
------------------------------
office varchar(6)

我为employee_type3 下的每个子类型制作了表格。我需要做的是创建一个视图ALL_EMPLOYEES,其中包含来自所有员工子类型的数据。视图应包含每个子类型的所有列。很明显,在某些列中将是空值。

有谁知道怎么做这样的视图?我认为联合在这里没用,因为我的列数不同。

非常感谢您的帮助!

【问题讨论】:

    标签: database inheritance view subtype supertype


    【解决方案1】:

    你确实使用了一个联合(但一个UNION ALL)。

    null-extend所有行,使它们具有相同的结构:

    select Col1, NULL as Col2, 1 as Discriminator FROM T1 union all
    select NULL as Col1, Col2, 2 as Discriminator FROM T2
    

    请注意,我包含了一个鉴别器,因此您可以过滤类型(甚至确定它)。

    【讨论】:

      【解决方案2】:

      我找到了解决方案,所以如果有人对类似问题感兴趣,你可以在这里找到一些灵感。解决方案:

      create view all_employees 
      (
       empno,
       ename,
       job,
       hiredate,
       sal,
       comm,
       deptno,
       office,
       car
      ) 
      as 
      select empno,
             ename,
             job,
             hiredate,
             sal,
             null,
             deptno,
             office,
             car 
        from manager 
      union 
      select empno,
             ename,
             job,
             hiredate,
             sal,
             comm,
             deptno,
             null,
             null 
        from salesman 
      union 
      select empno,
             ename,
             job,
             hiredate,
             sal,
             null,
             deptno,
             office,
             null 
        from staff
      

      只需要添加null,其中没有为子类型定义列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多