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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
drop table tableprincipale
drop table tablelibelle
drop view lavue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !