|
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 |
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 >>
|