| 
			 
  | 
		
			 Recette
			#3:  | 
	
| 
			 Février 2011  | 
		
| 
			 SQL dispose d'une autre syntaxe pour les opérations de
			jointure.  | 
	
| 
			 SELECT lc.lc_id AS
			lc_id,  | 
	
La requête ci-dessus à un air de déjà vu non ? vous avez raison, nous l'avons déjà utilisé ...
| 
			 SELECT lc.lc_id AS
			lc_id,  | 
	
Bien, cette nouvelle requête est identique à la première,
mais a été écrite en suivant la deuxième syntaxe: 
l'utilisation de la clause JOIN ... ON (...) rend plus explicite la requête.
et les conditions de JOINture
	sont maintenant directement exprimée au sein du terme ON
	(...) :
ceci permet d'avoir une requête plus lisible
	et compréhensible.
cependant, il ne s'agit la que d'une autre syntaxe:
il n'y
	a aucune différence avec la première requête du point de vue
	fonctionnel. 
	
| 
			 SELECT r.region_name AS
			region,  | 
	
| 
			 region  | 
		
			 county  | 
		
			 local_council  | 
		
			 population  | 
	
| 
			 ABRUZZO  | 
		
			 PESCARA  | 
		
			 PESCARA  | 
		
			 116286  | 
	
| 
			 CALABRIA  | 
		
			 REGGIO DI CALABRIA  | 
		
			 REGGIO DI CALABRIA  | 
		
			 180353  | 
	
| 
			 CAMPANIA  | 
		
			 NAPOLI  | 
		
			 NAPOLI  | 
		
			 1004500  | 
	
| 
			 CAMPANIA  | 
		
			 SALERNO  | 
		
			 SALERNO  | 
		
			 138188  | 
	
| 
			 EMILIA-ROMAGNA  | 
		
			 BOLOGNA  | 
		
			 BOLOGNA  | 
		
			 371217  | 
	
| 
			 ...  | 
		
			 ...  | 
		
			 ...  | 
		
			 ...  | 
	
Rien d'étrange dans cette requête:
on a simplement introduit la clause ON (... AND lc.population < 100000)afin d'exclure les Local Council peu peuplés.
| 
			 SELECT r.region_name AS
			region,  | 
	
| 
			 region  | 
		
			 county  | 
		
			 local_council  | 
		
			 population  | 
	
| 
			 ABRUZZO  | 
		
			 CHIETI  | 
		
			 NULL  | 
		
			 NULL  | 
	
| 
			 ABRUZZO  | 
		
			 L'AQUILA  | 
		
			 NULL  | 
		
			 NULL  | 
	
| 
			 ABRUZZO  | 
		
			 PESCARA  | 
		
			 PESCARA  | 
		
			 116286  | 
	
| 
			 ABRUZZO  | 
		
			 TERAMO  | 
		
			 NULL  | 
		
			 NULL  | 
	
| 
			 BASILICATA  | 
		
			 MATERA  | 
		
			 NULL  | 
		
			 NULL  | 
	
| 
			 BASILICATA  | 
		
			 POTENZA  | 
		
			 NULL  | 
		
			 NULL  | 
	
| 
			 ...  | 
		
			 ...  | 
		
			 ...  | 
		
			 ...  | 
	
En apparence, cette requête est la même que la précédente.
Mais
il y a pourtant une différence remarquable: 
cette fois nous avons utilisé la
	clause LEFT JOIN
	:
la liste des résultats diffère de la requète précédente. 
	
la clause JOIN inclus dans les résultats uniquement les lignes dont le terme de droite ET le terme de gauche correspondent au critère de jointure.
la clause LEFT JOIN est différente: elle va littéralement joindre les deux tables, tous les éléments de la première table sont listés, auxquels sont greffés les éléments de la table jointe: les lignes de la table jointe ne redondant pas aux critères de jointure prennent la valeur NULL.
| 
			 Cette différence entre JOIN
			et LEFT JOIN est
			fondamentale.   | 
	
| 
			 
  | 
		
			 Author: Alessandro Furieri a.furieri@lqt.it  | 
	
| 
			 This work is licensed under the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.  | 
	|
| 
			 | 
	|
| 
			 
  | 
		
			 Permission is granted to copy, distribute and/or modify this
			document under the terms of the  |