90
CHAPITRE 4. LANGAGE SQL
Elle produit le résultat suivant :
id_real | id_film |
titre
|
nom
| prenom
---------+---------+----------------------------+-----------+---------
1 |
1 | Dogville
| von Trier | Lars
1 |
2 | Breaking the waves
| von Trier | Lars
2 |
|
| Parker
| Alan
3 |
5 | Chasseur blanc, coeur noir | Eastwood | Clint
4 |
|
| Tarantino | Quentin
Exemples de jointures externes bilatérales
La jointure externe bilatérale entre les tables film et réalisateur permet de conserver, dans la table
résultat, une trace de tous les réalisateurs et de tous les films. Une telle jointure peut indifféremment
s’écrire :
SELECT * FROM film NATURAL FULL JOIN realisateur;
SELECT * FROM film NATURAL FULL OUTER JOIN realisateur;
SELECT * FROM film FULL JOIN realisateur USING (id_real);
SELECT * FROM film FULL OUTER JOIN realisateur USING (id_real);
Elle produit le résultat suivant :
id_real | id_film |
titre
|
nom
| prenom
---------+---------+----------------------------+-----------+---------
1 |
1 | Dogville
| von Trier | Lars
1 |
2 | Breaking the waves
| von Trier | Lars
2 |
|
| Parker
| Alan
3 |
5 | Chasseur blanc, coeur noir | Eastwood | Clint
4 |
|
| Tarantino | Quentin
5 |
3 | Faux-Semblants
|
|
5 |
4 | Crash
|
|
4.7.2 Les clauses GROUP BY et HAVING et les fonctions d’agrégation
Syntaxe
La syntaxe d’une requête faisant éventuellement intervenir des fonctions d’agrégation, une clause
GROUP BY et une clause HAVING est la suivante :
SELECT expression_1, [...,] expression_N [, fonction_agrégation [, ...] ]
FROM nom_table [ [ AS ] alias ] [, ...]
[ WHERE prédicat ]
[ GROUP BY expression_1, [...,] expression_N ]
[ HAVING condition_regroupement ]
La clause GROUP BY
La commande GROUP BY permet de définir des regroupements (i.e. des agrégats) qui sont projetés
dans la table résultat (un regroupement correspond à une ligne) et d’effectuer des calculs statistiques,
définis par les expressions fonction_agrégation [, ...], pour chacun des regroupements. La liste
d’expressions expression_1, [...,] expression_N correspond généralem