C’est quoi un SEMI JOIN et un ANTI JOIN. ? Comment ça marche. ?
SELECT t1.column1, t1.column2 FROM table1 t1 WHERE [ NOT | [EXISTS (SELECT NULL FROM table2 t2 WHERE t1.column_name = t2.column_name)]]; |
● SEMI JOINTURES = SEMI JOINS.
Une semi jointure est une jointure entre deux tables, où seulement une ligne de la première table gauche sera retourné au plus une
fois pour laquelle une correspondance est trouvée même si dans la deuxième table droite il existe plusieurs correspondances. (EXISTS, IN).
L'opérateur EXISTS est toujours suivie par une sous-requête entre parenthèses.
EXISTS est évalué à TRUE si la requête renvoie au moins une ligne.
SQL> SELECT d.dname, d.loc 2 FROM dept d 3 WHERE EXISTS (SELECT 1 4 FROM emp e 5 WHERE e.deptno = d.deptno); DNAME LOC -------------- ------------- ACCOUNTING NEW YORK RESEARCH DALLAS SALES CHICAGO SQL> SELECT d.dname, d.loc 2 FROM dept d 3 WHERE d.deptno IN (SELECT e.deptno 4 FROM emp e 5 WHERE e.deptno = d.deptno); DNAME LOC -------------- ------------- ACCOUNTING NEW YORK RESEARCH DALLAS SALES CHICAGO SQL> |
Départements pour lesquels il existe au moins un salarié.
● ANTI JOINTURES = ANTI JOINS
Une anti jointure est une jointure entre deux tables, où seulement une ligne de la première table gauche sera retourné au plus une fois pour laquelle aucune correspondance n’est
trouvée dans la deuxième table droite (NOT EXISTS, NOT IN).
L'opérateur NOT EXISTS est toujours suivie par une sous-requête entre parenthèses.
NOT EXISTS est évalué à TRUE si la requête renvoie au moins une ligne.
SQL> SELECT d.dname, d.loc 2 FROM dept d 3 WHERE NOT EXISTS (SELECT 1 4 FROM emp e 5 WHERE e.deptno = d.deptno); DNAME LOC -------------- ------------- OPERATIONS BOSTON SQL> SELECT d.dname, d.loc 2 FROM dept d 3 WHERE d.deptno NOT IN (SELECT e.deptno 4 FROM emp e 5 WHERE e.deptno = d.deptno); DNAME LOC -------------- ------------- OPERATIONS BOSTON SQL> |
Départements pour lesquels il n'existe pas de salarié.
| 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 |