Bonjour, dans le cadre d'une migration, je dois modifier quelques requêtes écrites pour oracle afin qu'elle puisse être mangée par Postgre.
Au départ, j'ai :
En appliquant ce que j'ai compris de cet opérateur, j'ai transformé le code en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 create view TSTVIEW as select a.*, b.met_id,b.met_lib, h.fct_id, c.fct_lib, d.ct_id,d.ct_lib,j.ct_valide, e.typ_id,e.typ_lib, f.notfct_val, i.ser_lib from collaborateurs a, metiers b, fonction c, competences_tech d, type_ct e, li_col_ct_fct f, li_col_met g, li_col_fct h, service i, LI_MET_TYP_CT j where (a.col_id=g.col_id(+) and g.met_id=b.met_id(+)) and (a.col_id=h.col_id(+) and h.fct_id=c.fct_id(+)) and (f.col_id=a.col_id and f.met_id=b.met_id and d.ct_id=f.ct_id) and (j.typ_id=e.typ_id) and (a.ser_id = i.ser_id(+)) and (j.ct_id = d.ct_id) and (j.met_id = g.met_id) order by a.col_nom asc , c.fct_lib asc , e.typ_lib asc , j.ct_valide desc, d.ct_lib asc;
La syntaxe est résultat de ce postgreSQL a retraité à partir de mon code modifié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE OR REPLACE VIEW tstview AS SELECT a.col_id, a.col_matricule, a.col_nom, a.col_prenom, a.col_dt_entree, a.col_qual, a.col_formation, a.ser_id, a.ag_id, a.col_typeimport, a.col_dt_naiss, a.col_int_ext, a.col_sexe, a.col_nomabrege, a.col_diplome, a.col_pr_semicomplet, a.col_pr_complet, b.met_id, b.met_lib, h.fct_id, c.fct_lib, d.ct_id, d.ct_lib, j.ct_valide, e.typ_id, e.typ_lib, f.notfct_val, i.ser_lib FROM collaborateurs a LEFT JOIN li_col_met g ON a.col_id = g.col_id LEFT JOIN li_col_fct h ON a.col_id = h.col_id LEFT JOIN service i ON a.ser_id = i.ser_id, competences_tech d, type_ct e, li_col_ct_fct f, li_col_met LEFT JOIN metiers b ON li_col_met.met_id = b.met_id, li_col_fct LEFT JOIN fonction c ON li_col_fct.fct_id = c.fct_id, li_met_typ_ct j WHERE f.col_id = a.col_id AND f.met_id = b.met_id AND d.ct_id = f.ct_id AND j.typ_id = e.typ_id AND j.ct_id = d.ct_id AND j.met_id = g.met_id ORDER BY a.col_nom, c.fct_lib, e.typ_lib, j.ct_valide DESC, d.ct_lib; ALTER TABLE tstview OWNER TO postgres;
Je suppose que ma requête est sémantiquement différente de la première car sous oracle, j'ai qq chose et pas sous Postgre alors que j'ai les même données.
Des paires d'yeux averties verraient-elles quelque chose ?
Partager