mardi 2 août 2011

OUTER JOIN : syntaxe ANSI et syntaxe Oracle

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

Aucun commentaire:

Enregistrer un commentaire