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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Par exemple, si j'ai ceci dans DB1 :
et ceci dans DB2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DOS_ID DOS_VERSION DOS_TYPE 10 1 SV 11 3 FV
la requete de la "Materialized View" va me renvoyer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DOS_ID DOS_VERSION DOS_TYPE 10 2 SV 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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DOS_ID DOS_VERSION DOS_TYPE 10 1 SV 10 2 SV 11 3 FV 12 4 FV
Quel est la meilleure requête pour arriver à ce résultat ?
Merci d'avance
Partager