Création de vue Vs création de vue matérialisée
Bonjour tout le monde !
je suis sous Oracle 10, et je cherche à créer une vue matérialisée. Le problème, c'est que j'ai une requête de création de vue qui marche impec', mais quand j'essaye de l'adapter pour une vue matérialisée à la place, ça ne marche pas !! Je croyais pourtant que ça se créait exactement de la même manière (enfin, en ce qui concerne le select, quoi...).
Voici une version simplifiée de mon problème :
Code:
1 2 3 4
|
drop table tableprincipale
drop table tablelibelle
drop view lavue |
Code:
1 2 3 4 5 6 7 8 9
|
create table tableprincipale
(
PK_tableprincipale varchar2(10) constraint PK_tableprincipale
primary key not null,
FK_libelle varchar2(10),
constraint FK_libelle foreign key (FK_libelle)
references tablelibelle (PK_tablelibelle) enable
); |
Code:
1 2 3 4 5 6 7
|
create table tablelibelle
(
PK_tablelibelle varchar2(10) constraint MON_ID_PROGRAMME primary key not null,
libelle varchar2(10)
); |
Code:
1 2 3 4 5 6 7 8 9
|
-- ca, ca marche !
create view lavue
as
select distinct tableprincipale.PK_tableprincipale,
(select libelle from tablelibelle where PK_tablelibelle=FK_libelle) as libelle
from tableprincipale
drop view lavue |
Code:
1 2 3 4 5 6 7 8 9
|
-- ca, ca ne marche pas, le select a l'interieur du select est refuse :
-- ORA-22818.00000 - "subquery expressions not allowed here"
create materialized view lavue
REFRESH FAST ON COMMIT
as
select distinct tableprincipale.PK_tableprincipale,
(select libelle from tablelibelle where PK_tablelibelle=FK_libelle) as libelle
from tableprincipale |
La création de la vue normale se fait, mais celle de la vue matérialisée est refusée, à cause du select à l'intérieur. En même temps, si on peut pas faire de requête un tant soit peu complexe, je vois plus trop l'intérêt des vues matérialisées par rapport aux vues normales...
Il y a un moyen de faire des vues matérialisées avec des colonnes obtenues par des select un peu complexes (et encore, là, ça va...) ? Je fais comment ?
Merci d'avance :D !