Quantcast

JOINTURES SQL - SQL JOINS

Mardi 5 juin 2012 2 05 /06 /Juin /2012 17:09

 

JOINTURES SQL.

Comment écrire une jointure sql sous Oracle.
Comment faire une jointure sql entre 2 tables.

Une jointure sql permet de mettre en relation plusieurs tables afin d'en extraire des données conditionnées par des comparaisons de colonnes.
Les jointures sql sont obligatoires si plusieurs tables apparaissent dans la clause FROM d’une requête.

Structure des tables A et B avec les données pour la démonstration en image des jointures sql dans Oracle.

SQL> SELECT * FROM A;

       KEY COL_1
---------- --------------------
         1 Jointure avec B
         2 Jointure avec B
         5 Absent dans B

SQL> SELECT * FROM B;

       KEY COL_1
---------- --------------------
         1 Jointure avec A
         2 Jointure avec A
           Absent dans A
         3 Absent dans A

 

JOINTURE LEFT JOIN.

JOINTURE LEFT JOIN

SQL> SELECT A.*,B.*
     FROM A
     LEFT JOIN B ON (A.KEY = B.KEY);

       KEY COL_1                       KEY COL_1
---------- -------------------- ---------- ---------------
         1 Jointure avec B               1 Jointure avec A
         2 Jointure avec B               2 Jointure avec A
         5 Absent dans B

SQL>
                        

JOINTURE LEFT JOIN

SQL> SELECT A.*,B.*
     FROM A
     LEFT JOIN B ON (A.KEY = B.KEY)
     WHERE B.KEY IS NULL;

       KEY COL_1                       KEY COL_1
---------- -------------------- ---------- -----------------
         5 Absent dans B

SQL>
                        

 


 

JOINTURE RIGHT JOIN.

JOINTURE RIGHT JOIN

SQL> SELECT A.*,B.*
     FROM A
     RIGHT JOIN B ON (A.KEY = B.KEY);

       KEY COL_1                       KEY COL_1
---------- -------------------- ---------- ----------------
         1 Jointure avec B               1 Jointure avec A
         2 Jointure avec B               2 Jointure avec A
                                           Absent dans A
                                         3 Absent dans A

SQL>
                        

JOINTURE RIGHT JOIN

SQL> SELECT A.*,B.*
     FROM A
     RIGHT JOIN B ON (A.KEY=B.KEY)
     WHERE A.KEY IS NULL;

       KEY COL_1                       KEY COL_1
---------- -------------------- ---------- --------------
                                           Absent dans A
                                         3 Absent dans A

SQL>
                        

 


 

JOINTURE INNER JOIN.

JOINTURE INNER JOIN

SQL> SELECT A.*,B.*
     FROM A
     INNER JOIN B ON (A.KEY = B.KEY);

       KEY COL_1                       KEY COL_1
---------- -------------------- ---------- ----------------
         1 Jointure avec B               1 Jointure avec A
         2 Jointure avec B               2 Jointure avec A

SQL>
                        

 


 

JOINTURE FULL OUTER JOIN.

JOINTURE FULL OUTER JOIN

SQL> SELECT A.*,B.*
     FROM A
     FULL OUTER JOIN B ON (A.KEY = B.KEY);

       KEY COL_1                       KEY COL_1
---------- -------------------- ---------- ----------------
         1 Jointure avec B               1 Jointure avec A
         2 Jointure avec B               2 Jointure avec A
         5 Absent dans B
                                           Absent dans A
                                         3 Absent dans A

SQL>
                        

JOINTURE FULL OUTER JOIN

SQL> SELECT A.*,B.*
     FROM A
     FULL OUTER JOIN B ON (A.KEY = B.KEY)
     WHERE A.KEY IS NULL OR B.KEY IS NULL;

       KEY COL_1                       KEY COL_1
---------- -------------------- ---------- --------------
         5 Absent dans B
                                           Absent dans A
                                         3 Absent dans A

SQL>
                        

 

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Les types de JOINTURES dans Oracle
• Jointure SQL OUTER JOIN
Par Oracle SQL - Publié dans : JOINTURES SQL - SQL JOINS
Ecrire un commentaire - Voir les 0 commentaires
Jeudi 30 juin 2011 4 30 /06 /Juin /2011 10:21

 

Requête SQL Jointure Naturelle / NATURAL JOIN / JOIN USING. 

C’est quoi un NATURAL JOIN. ? Comment ça marche. ?

 

JOINTURE NATURELLE = NATURAL JOIN.
Une jointure naturelle est une jointure entre deux tables avec une clause NATURAL JOIN. La clause de jointure est automatiquement construite sur la base de toutes les colonnes portant le même nom entre les deux tables.

JOINTURE NATURELLE RESTREINTE= JOIN USING.
Une jointure naturelle restreinte est une jointure entre deux tables avec une clause JOIN USING. La clause JOIN programme une jointure naturelle restreinte à un ensemble de colonnes.

Il ne faut pas utiliser d’alias de tables dans la clause SELECT et WHERE pour les colonnes utilisées dans la jointure naturelle sinon error ORA-25155.
ORA-25155: column used in NATURAL join cannot have qualifier.
Cause: Columns that are used for a named-join (either a NATURAL join or a join with a USING clause) cannot have an explicit qualifier.

Pour une meilleure approche des exemples ci-dessous voici les colonnes des tables avec en couleur les colonnes où  des possibilités de jointures naturelles ou restreintes existent. Ces champs ne pourront pas avoir d'alias si ils sont utilisés dans la jointure.

Tables [ EMP ] | EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO
Tables [ DEPT ] | DEPTNO | DNAME | LOC
Tables [ BONUS ] | ENAME | JOB | SAL | COMM

 

Exemple de Syntaxe Requêtes NATURAL JOIN / JOIN USING.

 
SELECT  t1.column1, t1.column2
  FROM  table1 t1
 [ INNER JOIN table2 t2 USING (column_name1, column_name2,...) ] |
 [ NATURAL INNER JOIN table2 ];

 

Exemple Jointure naturelle - NATURAL JOIN.

 
Ici pas d'alias pour deptno car deptno est utilisé par le NATURAL JOIN.

SQL> SELECT   e.ename, e.job, d.loc, deptno
  2    FROM   emp e NATURAL INNER JOIN dept d
  3   WHERE   deptno = 10;

ENAME      JOB       LOC               DEPTNO
---------- --------- ------------- ----------
CLARK      MANAGER   NEW YORK              10
KING       PRESIDENT NEW YORK              10
MILLER     CLERK     NEW YORK              10



Ici pas d'alias pour ename, job et deptno car sont utilisés par les 2 NATURAL JOIN.

SQL> SELECT   ename, job, d.loc, deptno
  2    FROM   emp e NATURAL INNER JOIN dept d
  3                 NATURAL INNER JOIN bonus b
  4   WHERE   deptno = 10;

ENAME      JOB       LOC               DEPTNO
---------- --------- ------------- ----------
MILLER     CLERK     NEW YORK              10



Ici pas d'alias pour deptno car il est utilisé par le NATURAL JOIN.

SQL> SELECT   e.ename, b.job, d.loc, deptno
  2    FROM   emp e NATURAL INNER JOIN dept d
  3                 INNER JOIN bonus b ON (e.ename = b.ename)
  4   WHERE   deptno = 10;

ENAME      JOB       LOC               DEPTNO
---------- --------- ------------- ----------
MILLER     CLERK     NEW YORK              10

SQL>

 

Exemple Jointure naturelle restreinte - JOIN USING.

 
Ici pas d'alias pour deptno car deptno est utilisé par le JOIN USING.

SQL> SELECT   e.ename, e.job, d.loc, deptno
  2    FROM   emp e INNER JOIN dept d USING (deptno)
  3   WHERE   deptno = 10;

ENAME      JOB       LOC               DEPTNO
---------- --------- ------------- ----------
CLARK      MANAGER   NEW YORK              10
KING       PRESIDENT NEW YORK              10
MILLER     CLERK     NEW YORK              10


Ici pas d'alias pour job et deptno car sont utilisés par les 2 JOIN USING.

SQL> SELECT   e.ename, job, d.loc, deptno
  2    FROM   emp e INNER JOIN dept d USING (deptno)
  3                 INNER JOIN bonus b USING (job)
  4   WHERE   deptno = 10;

ENAME      JOB       LOC               DEPTNO
---------- --------- ------------- ----------
MILLER     CLERK     NEW YORK              10

SQL>

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Les types de JOINTURES dans ORACLE
• Jointure SQL INNER JOINS ou EQUI JOINS
• Jointure SQL SELF JOINS
• Jointure SQL CROSS JOIN / CARTESIAN PRODUCT
• Jointure SQL FULL OUTER JOIN
• Jointure SQL LEFT / RIGHT OUTER JOIN
• SEMI JOINS et ANTI JOINS avec NOT IN / NOT EXISTS
Par Daniel Roesch - Publié dans : JOINTURES SQL - SQL JOINS
Ecrire un commentaire - Voir les 0 commentaires

Oracle Sql et administration

Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés