1

Object-Relational dtb のラボに少し行き詰まっています。私はこの階層を持っています:

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、すべての従業員サブタイプからのデータを含むビューを作成することです。ビューには、各サブタイプのすべての列が含まれている必要があります。一部の列では null 値になることは明らかです。

そのようなビューを行う方法を知っている人はいますか? 列の数が異なるため、ここではユニオンは役に立たないと思います。

ご助力ありがとうございます!

4

2 に答える 2

0

あなたは確かにユニオンを使用しています(しかしUNION ALL)。

すべての行をヌル拡張して、同じ構造になるようにします。

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

タイプでフィルター処理できるように (または判別することもできるように)、ディスクリミネーターを含めたことに注意してください。

于 2013-01-11T22:01:28.760 に答える
0

私は解決策を見つけたので、誰かが同様の問題に興味を持っているなら、ここでいくつかのインスピレーションを見つけることができます. 解決:

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を追加するだけです。

于 2013-01-15T09:37:12.270 に答える