Ci-dessous un aide-mémoire pour se souvenir de l'écriture des jointures externes avec les deux syntaxes autorisées dans Oracle.
SQL> CREATE TABLE pays (id_pays NUMBER, pays VARCHAR2(10));
Table created.
SQL> CREATE TABLE villes (
2 id_ville NUMBER,
3 ville VARCHAR2(10),
4 id_pays NUMBER);
Table created.
SQL> INSERT INTO pays VALUES (1, 'USA');
1 row created.
SQL> INSERT INTO pays VALUES (2, 'RUSSIE');
1 row created.
SQL> INSERT INTO pays VALUES (3, 'FRANCE');
1 row created.
SQL> INSERT INTO villes VALUES (1, 'DENVER', 1);
1 row created.
SQL> INSERT INTO villes VALUES (2, 'CHICAGO', 1);
1 row created.
SQL> INSERT INTO villes VALUES (3, 'MOSCOU', 2);
1 row created.
SQL> INSERT INTO villes VALUES (4, 'DJAKARTA', 5);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> -- LEFT OUTER JOIN
SQL> SELECT pays, ville
2 FROM pays p LEFT OUTER JOIN villes v
3 ON p.id_pays=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
SQL> SELECT pays, ville
2 FROM pays p, villes v
3 WHERE p.id_pays=v.id_pays(+)
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
SQL> -- RIGHT OUTER JOIN
SQL> SELECT pays, ville
2 FROM pays p RIGHT OUTER JOIN villes v
3 ON p.id_pays=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
SQL> SELECT pays, ville
2 FROM pays p, villes v
3 WHERE p.id_pays(+)=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
SQL> -- FULL OUTER JOIN
SQL> SELECT pays, ville
2 FROM pays p FULL OUTER JOIN villes v
3 ON p.id_pays=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
SQL> SELECT pays, ville
2 FROM pays p, villes v
3 WHERE p.id_pays=v.id_pays(+)
4 UNION
5 SELECT pays, ville
6 FROM pays p, villes v
7 WHERE p.id_pays(+)=v.id_pays
8 ORDER BY 1,2
9 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
Table created.
SQL> CREATE TABLE villes (
2 id_ville NUMBER,
3 ville VARCHAR2(10),
4 id_pays NUMBER);
Table created.
SQL> INSERT INTO pays VALUES (1, 'USA');
1 row created.
SQL> INSERT INTO pays VALUES (2, 'RUSSIE');
1 row created.
SQL> INSERT INTO pays VALUES (3, 'FRANCE');
1 row created.
SQL> INSERT INTO villes VALUES (1, 'DENVER', 1);
1 row created.
SQL> INSERT INTO villes VALUES (2, 'CHICAGO', 1);
1 row created.
SQL> INSERT INTO villes VALUES (3, 'MOSCOU', 2);
1 row created.
SQL> INSERT INTO villes VALUES (4, 'DJAKARTA', 5);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> -- LEFT OUTER JOIN
SQL> SELECT pays, ville
2 FROM pays p LEFT OUTER JOIN villes v
3 ON p.id_pays=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
SQL> SELECT pays, ville
2 FROM pays p, villes v
3 WHERE p.id_pays=v.id_pays(+)
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
SQL> -- RIGHT OUTER JOIN
SQL> SELECT pays, ville
2 FROM pays p RIGHT OUTER JOIN villes v
3 ON p.id_pays=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
SQL> SELECT pays, ville
2 FROM pays p, villes v
3 WHERE p.id_pays(+)=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
SQL> -- FULL OUTER JOIN
SQL> SELECT pays, ville
2 FROM pays p FULL OUTER JOIN villes v
3 ON p.id_pays=v.id_pays
4 ORDER BY 1,2
5 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
SQL> SELECT pays, ville
2 FROM pays p, villes v
3 WHERE p.id_pays=v.id_pays(+)
4 UNION
5 SELECT pays, ville
6 FROM pays p, villes v
7 WHERE p.id_pays(+)=v.id_pays
8 ORDER BY 1,2
9 ;
PAYS VILLE
---------- ----------
FRANCE
RUSSIE MOSCOU
USA CHICAGO
USA DENVER
DJAKARTA
Aucun commentaire:
Enregistrer un commentaire