Supprimer les doublons dans une vue
Bonjour,
J'ai 2 bases Oracle distinctes DB1 et DB2, chacune contenant une table DOSSIER (qui a le même schéma dans les 2 bases), et chaque table DOSSIER étant alimentée par le même système.
Pour un outil d'administration, je dois regrouper dans une table DOSSIER d'une base DB3 le contenu des 2 tables DOSSIER des bases DB1 et DB2.
Le principe retenu est d'utiliser une "Materialized View" que je crée comme ceci :
Code:
1 2 3 4 5 6 7 8
|
CREATE MATERIALIZED VIEW DB3.DOSSIER
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS
select DOSSIER.* from DOSSIER@DB1
UNION
select DOSSIER.* from DOSSIER@DB2 |
DB1 et DB2 sont des DB_LINKS que je créé précédemment. Cela marche bien sauf je voudrais ne garder qu'un exemplaire des lignes ayant la même clé primaire.
Par exemple, si j'ai ceci dans DB1 :
Code:
1 2 3 4
|
DOS_ID DOS_VERSION DOS_TYPE
10 1 SV
11 3 FV |
et ceci dans DB2 :
Code:
1 2 3 4
|
DOS_ID DOS_VERSION DOS_TYPE
10 2 SV
12 4 FV |
la requete de la "Materialized View" va me renvoyer :
Code:
1 2 3 4 5 6
|
DOS_ID DOS_VERSION DOS_TYPE
10 1 SV
10 2 SV
11 3 FV
12 4 FV |
Je voudrais que la ligne ayant 10 pour clé primaire ne soit présente qu'une fois (la ligne présente dans DB1, pas celle de DB2)
Quel est la meilleure requête pour arriver à ce résultat ?
Merci d'avance