SQL Jointure Externe



SQL > Commandes SQL > Jointure Externe 

Nous avons précédemment analysé la jointure gauche ou jointure intérieure, où nous avons sélectionné des lignes communes aux tables désignées pour une jointure. Comment devons-nous procéder dans les cas où nous serions intéressés à sélectionner des éléments d’une table indépendamment de s’ils sont contenus dans la deuxième table ? Il est nécessaire d’utiliser maintenant la commande OUTER JOIN de SQL.

La syntaxe pour exécuter une jointure externe sous SQL dépend de la base de données utilisée. Par exemple, dans Oracle, il faut placer un "(+)" dans la clause WHERE de l’autre côté de la table dans laquelle nous souhaitons inclure toutes les lignes.

Supposons que nous avons les deux tables suivantes :

Table Store_Information
 Store_Name  Sales  Txn_Date 
 Los Angeles 1500  05-Jan-1999 
 San Diego 250  07-Jan-1999 
 Los Angeles 300  08-Jan-1999 
 Boston 700  08-Jan-1999 

Table Geography
 Region_Name  Store_Name 
 East  Boston 
 East  New York 
 West  Los Angeles 
 West  San Diego 

et nous souhaitons trouver le montant des ventes de tous les magasins. Dans le cas d’une jointure régulière, il n’est pas possible d’obtenir le critère de recherche souhaité étant donné que "New York" n’apparaîtra pas dans la table Store_Information. Par conséquent, il est nécessaire d’exécuter une jointure externe sur les deux tables ci-dessus :

SELECT A1.Store_Name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.Store_Name = A2.Store_Name (+)
GROUP BY A1.Store_Name;

Notez que dans ce cas de figure, c’est la syntaxe Oracle qui est utilisée pour la jointure externe.

Résultat:

Store_Name SALES
Boston 700
New York 
Los Angeles 1800
San Diego 250

Remarque : à défaut d’une correspondance dans la deuxième table, la valeur NULL sera retournée. Dans ce cas, "New York" n’apparaîtra pas dans la table Store_Information, sa colonne "SALES" correspondante contient une valeur NULL.

SQL Concaténer >>

Cette page a été mise à jour pour la dernière fois le 18/06/2022


Copyright © 2024   1keydata.com   Tous droits réservés