1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| --drop table Maitre;
--drop table Fils1;
--drop table Fils2;
CREATE TABLE Maitre as
(SELECT level as maitre_pk,DBMS_RANDOM.STRING('A', 10) as libelle
FROM dual
connect BY level <= 55);
CREATE TABLE Fils1 as
(
SELECT maitre_pk as fils1_pk,maitre_pk as maitre_fk,
DBMS_RANDOM.STRING('A', 10) as libelle
FROM Maitre
);
CREATE TABLE Fils2 as
(SELECT maitre_pk+1 as fils2_pk,maitre_pk as maitre_fk,
DBMS_RANDOM.STRING('A', 10) as libelle
FROM Maitre);
analyze table Maitre compute statistics;
analyze table Fils1 compute statistics;
analyze table Fils2 compute statistics;
--drop view viewtest;
create view viewtest as (
select
m.maitre_pk as viewtest_pk,
nvl(f1.libelle,'')||''||nvl(f2.libelle,'') as fils
from Maitre m
JOIN Fils1 f1 ON m.maitre_pk=f1.maitre_fk
JOIN Fils2 f2 ON m.maitre_pk=f2.maitre_fk);
select * from viewtest
where viewtest_pk = 25 |
Partager