bdw1 : bases de données et programmation web sql : partie ...€¦ · scarlett johansson tom...
TRANSCRIPT
![Page 1: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/1.jpg)
1/86
BDW1 : Bases de données et Programmation Web
SQL : Partie 2 - Sous-requêtes et regroupements
Nicolas Lumineau
Université Claude Bernard Lyon 1
Licence 2e année - 2017/2018
http://liris.cnrs.fr/nicolas.lumineau/ Teaching>BDW1
![Page 2: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/2.jpg)
2/86
Enseignements de BDW1
1 [BD & Web] Introduction2 [BD]La syntaxe SQL
SQL : de la projection à la jointureSQL : sous-requêtes et regroupementsFonctions diverses et commandes SQL
3 [BD]Conception de base de donnéesSchéma Entité/AssociationDu modèle conceptuel au modèle relationnel
4 [Web] Programmation WebLe langage HTML/CSSLe langage PHP
Interrogation d’une BD via PHP
5 [BD] Optimisation de requêteAlgèbre RelationnelleTransformation d’arbres algébriques
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 2
![Page 3: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/3.jpg)
3/86
Plan
1 Requête avec sous-requêtes
2 Combinaison de requêtes
3 Les regroupements
4 Condition de sélection sur les groupes
![Page 4: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/4.jpg)
4/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Remarque
Toutes les requêtes que nous avons vues jusqu’à présent sesuffisaient pour répondre au besoin exprimé par l’utilisateur.
ExempleDonner le prénom et le prénom des artistes qui ont joué dansles mêmes films que ’Tom CRUISE’.
Pour construire la requête de l’exemple, il est possible de raisonnerde la manière suivante :
Commençons par identifier les identifiants des films danslesquels l’acteur ’Tom CRUISE’ a jouéUne fois ces films identifiés, regardons si un(e) artiste a un rôledans l’un de ces filmsRetournons le prénom et le nom de ces artistes
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 4
![Page 5: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/5.jpg)
5/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Vers la définition de sous-requêtes...
ExempleDonner le prénom et le prénom des artistes qui ont joué dansles mêmes films que ’Tom CRUISE’.
Pour raisonner de cette manière, nous sommes partis du principequ’il était possible de calculer les identifiants des films de ’TomCRUISE’ à l’intérieur de la requête.
Ceci est possible car nous pouvons créer des sous-requêtes dansune requête.⇒ Augmentation de l’expression du langage de requête.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 5
![Page 6: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/6.jpg)
6/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Hiérarchisation des requêtes
Considérer des sous-requêtes a pour conséquence de créer différentsniveaux de requêtes. Nous distinguons alors :
la requête principalela sous-requête,qui retourne :
un tuple ou un ensemble detuplesun attribut ou un ensembled’attributs
et qui peut être :non corrélée à la requêteprincipalecorrélée à la requête principale
Remarque:la requête principale est celle associée au premier SELECTune sous-requête peut contenir elle-même une autresous-requête ⇒ concept d’imbrication des requêtes !
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 6
![Page 7: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/7.jpg)
7/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Utiliser des sous-requêtes : mais où ?
Dans un premier temps, nous allons voir des sous-requêtesdans les clauses :
WHEREFROM (à condition de renommer le résultat)
Plus tard, nous verrons que les sous-requêtes sont égalementutilisable dans les clauses :
SELECT (à condition que pour chaque ligne sélectionnée parla requête principale, on ne sélectionne qu’une ligne dans lasous-requête composé d’un seul attribut)HAVING (pour des conditions portant sur des groupes)
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 7
![Page 8: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/8.jpg)
8/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Différents types de sous-requête
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 8
![Page 9: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/9.jpg)
9/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Les sous-requêtes scalaires
Une sous-requête qui ne re-tourne qu’un seul tuple etqu’un seul attribut est nommé :Sous-requête scalaire.
Comme la sous-requête ne retourne qu’une valeur d’un seulattribut, il est alors possible de comparer (=, ! =, <, >, ...)directement le résultat de requête avec la valeur d’un attribut de larequête principale.
Cas où la sous-requête scalaire avec l’égalité comme comparaison
SELECT *FROM nomTable1WHERE att1 = (SELECT att3 FROM nomTable2) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 9
![Page 10: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/10.jpg)
10/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 1 de sous-requête
Donner le prénom et le nom des artistes qui ont déjà gagné unsalaire supérieur au sens strict au salarie gagné pour le rôle de"George Valentin" dans le film "The Artist".
SELECT A.prenom, A.nomFROM Artiste A JOIN JoueDans JD ON A.ida = JD.idaWHERE JD.sal > (SELECT JD.sal
FROM Film F JOIN JoueDans JDON F .idf = JD.idfWHERE F .titre = ’The Artist’AND JD.nom = ’George Valentin’) ;
Résultat :prenom nomScarlett JOHANSSONTom CRUISEDany BOON
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10
![Page 11: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/11.jpg)
11/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 1 de sous-requête
En effet : les salaires supérieurs à "0.3" sont "1.3", "14", "20".
Artiste(ida, nom, prenom, nation)ida prenom nom nation1 Jean DUJARDIN FR2 Scarlett JOHANSSON USA3 Tom CRUISE USA4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK7 Doug LIMAN USA8 Luc BESSON FR9 Michel HAZANAVICIUS FR
JoueDans(ida, idf, nom)ida idf nom sal1 3 George Valentin 0,31 4 Hubert Bonisseur de La Bath 0,22 2 Lucy Miller 143 1 Bill Cage 204 4 Larmina El Akmar Betouche NULL4 3 Peppy Miller NULL5 5 Antoine Bailleul 1,36 1 Rita Vrataski NULL
Film(idf, titre, annee, genre, real, budget)idf titre annee genre real budget1 Edge of tomorrow 2014 SF 7 1782 Lucy 2014 SF 8 403 The Artist 2011 Drame 9 94 OSS 117: Le Caire, Nid d’espions 2006 NULL 9 145 Bienvenue chez les Ch’tis 2008 Comédie 5 11
Résultat :prenom nomScarlett JOHANSSONTom CRUISEDany BOON
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 11
![Page 12: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/12.jpg)
12/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Et si la sous-requête retournait deux attributs ?
Les résultat d’une sous-requêtequi ne retourne qu’un seul tupleavec plusieurs attributs peutêtre comparé à un ensembled’attributs.
Cas où la sous-requête mono-ligne avec colonne double et l’égalitécomme comparaison
SELECT *FROM nomTable1WHERE (att1, att2) = (SELECT att3, att4
FROM nomTable2) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 12
![Page 13: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/13.jpg)
13/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 2 de sous-requête
Donner le titre des films de même genre et sortie la même annéeque le film "Lucy".
SELECT F .titreFROM Film FWHERE (F .annee, F .genre) = (SELECT F .annee, F .genre
FROM Film FWHERE F .titre = ’Lucy’) ;
Résultat :titre
Edge of tomorrowLucy
Remarque: Nous verrons comment fairepour que Lucy n’apparaisse pas dans le résul-tat en créant une corrélation entre la sous-requête et la requête principale. (voir les"sous-requêtes corrélées").
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 13
![Page 14: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/14.jpg)
14/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Et si la sous-requête retournait n attributs ?
La notation se généralise pour n attributs :
Cas où la sous-requête mono-ligne et multi-colonne avec l’égalitécomme comparaison
SELECT *FROM nomTable1WHERE
(att1, ..., attn) = (SELECT att1, ..., attnFROM nomTable2) ;
Il est important que le nombre d’attributs à gauche de l’opérateursoit le même que le nombre d’attributs dans le SELECT de larequête imbriquée.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 14
![Page 15: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/15.jpg)
15/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Et si la sous-requête retournait plusieurs tuples ?
Il n’est plus possible de com-parer directement un attributavec le résultat de la sous-requête (qui est un ensemblede valeurs)
Dans ce cas, il est nécessaire d’introduire de nouveaux opérateurspermettant d’introduire la sous-requête dans la requête.Voyons maintenant les opérateurs IN , ANY et ALL .
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 15
![Page 16: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/16.jpg)
16/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
attribut IN Sous-requête
Pour ajouter une condition d’appartenance d’une valeur d’attributau résultat d’une requête retournant potentiellement un ensemblede valeurs, il est possible d’utiliser IN .
Expression de la contrainte : "mon attribut doit appartenir aurésultat de la sous-requête"
SELECT *FROM nomTable1WHERE att1 IN (SELECT att3 FROM nomTable2) ;
Remarque: Il est important que le nombre d’attributs retournéspar la sous-requête corresponde au nombre d’attributs à gauche duIN .
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 16
![Page 17: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/17.jpg)
17/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
attribut IN Sous-requête
Car il est également possible d’exprimer la contrainte sur plusieursattributs
Expression de la contrainte : "mon couple d’attributs doitappartenir au résultat de la sous-requête"
SELECT *FROM nomTable1WHERE (att1, att2) IN
(SELECT att3, att4 FROM nomTable2) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 17
![Page 18: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/18.jpg)
18/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 3 de sous-requête
Donner le nom des personnages qui apparaissent dans un filmréalisé par ’Michel HAZANAVICIUS’.
SELECT JD.nomFROM JoueDans JDWHERE JD.idf IN
(SELECT F .idfFROM Film F JOIN Artiste AON F .real = A.idaWHERE A.prenom = ’Michel’AND A.nom = ’HAZANAVICIUS’) ;
Résultat :nom
George ValentineHubert Bonisseur de la BathLarmina El Akmar Betouche
Peppy Miller
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 18
![Page 19: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/19.jpg)
19/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Question ?
Est-ce que les requêtes ci-dessous retournent forcément le mêmerésultat (i.e., , sont-elles équivalentes quelque soit le jeu dedonnées ?)
SELECT *FROM nomTable1WHERE (att1, att2) IN
(SELECT att3, att4 FROM nomTable2) ;
SELECT *FROM nomTable1WHERE att1 IN
(SELECT att3 FROM nomTable2)AND att2 IN
(SELECT att4 FROM nomTable2) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 19
![Page 20: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/20.jpg)
20/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
attribut NOT IN sous-requête
Il est possible de combiner un IN avec un NOT pour ajouter unecondition de non appartenance d’une valeur d’attribut au résultatd’une sous-requête.
Expression de la contrainte : "mon attribut ne doit pas appartenirau résultat de la sous-requête"
SELECT *FROM nomTable1WHERE att1 NOT IN (SELECT att3 FROM nomTable2) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 20
![Page 21: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/21.jpg)
21/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 4 de sous-requête
Donner le prénom et le nom des artistes qui n’ont jamais joué dansun film réalisé par ’Doug LIMAN’.
SELECT A.nomFROM Artiste AWHERE A.ida NOT IN
(SELECT JD.idaFROM JoueDans JD JOIN Film FON JD.idf = F .idfJOIN Artiste ON F .real = A.idaWHERE A.prenom = ’Doug’AND A.nom = ’LIMAN’) ;
Résultat :prenom nomJean DUJARDIN
Scarlett JOHANSSONBérénice BEJO
Dany BOON
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 21
![Page 22: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/22.jpg)
22/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Question ?
Que retourne la requête suivante ?
SELECT A.nomFROM Artiste AWHERE A.idp IN
(SELECT JD.idpFROM JoueDans JD JOIN Film FON JD.idf != F .idfJOIN Artiste ON F .real = A.idaWHERE A.prenom = ’Doug’AND A.nom = ’LIMAN’) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 22
![Page 23: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/23.jpg)
23/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
attribut <comparateur> ANY sous-requête
Pour ajouter une condition permettant de vérifier qu’unecomparaison est vraie au moins un fois entre un attribut etl’ensemble des valeurs retournées par une sous-requête, il estpossible d’utiliser � ANY , avec , � ∈ {=, ! =, <,=<,=>,>} .
Expression de la contrainte : "La valeur de l’attribut att1 estinférieurs strictement à au moins une des valeurs de att3 retournéespar la sous-requête"
SELECT *FROM nomTable1WHERE att1 < ANY (SELECT att3 FROM nomTable2) ;
Remarque: Il est important que le types des attributs (ici att1 etatt3) soient les mêmes pour pouvoir appliquer la comparaison.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 23
![Page 24: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/24.jpg)
24/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 5 de sous-requête
Donner le titre des films dont le budget est supérieur strictement àau moins un des films réalisé par ’Michel HAZANAVICIUS’.
SELECT Fr .titreFROM Film FrWHERE Fr .budget > ANY
(SELECT F .budgetFROM Film F JOIN Artiste AON F .real = A.idaWHERE A.prenom = ’Michel’AND A.nom = ’HAZANAVICIUS’) ;
Résultat :titre
Edge of tomorrowLucy
OSS 117 : Le Caire, Nid d’espionsBienvenue chez les Ch’tis
Remarque: Nous aurons besoin demodifier la requête pour ne pas avoirOSS 117 dans le résultats (voir les"sous-requêtes corrélées").
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 24
![Page 25: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/25.jpg)
25/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
attribut <comparateur> ALL sous-requête
Pour ajouter une condition permettant de vérifier qu’unecomparaison toujours est vraie entre un attribut et l’ensemble desvaleurs retournées par une sous-requête, il est possible d’utiliser �ALL , avec , � ∈ {=, ! =, <,=<,=>,>} .
Expression de la contrainte : "La valeur de l’attribut att1 estinférieurs strictement à toutes les valeurs de att3 retournées par lasous-requête"
SELECT *FROM nomTable1WHERE att1 < ALL (SELECT att3 FROM nomTable2) ;
Remarque: Il est important que le types des attributs (ici att1 etatt3) soient les mêmes pour pouvoir appliquer la comparaison.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 25
![Page 26: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/26.jpg)
26/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 6 de sous-requête
Donner le titre des films dont le budget est supérieur strictement aubudget de n’importe quel film réalisé par ’Michel HAZANAVICIUS’.
SELECT Fr .titreFROM Film FrWHERE Fr .budget > ALL
(SELECT F .budgetFROM Film F JOIN Artiste AON F .real = A.idaWHERE A.prenom = ’Michel’AND A.nom = ’HAZANAVICIUS’) ;
Résultat :titre
Edge of tomorrowLucy
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 26
![Page 27: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/27.jpg)
27/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Question ?
Que retourne la requête suivante ?
SELECT Fr .titreFROM Film FrWHERE Fr .budget <= ALL (SELECT F .budget
FROM Film F ) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 27
![Page 28: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/28.jpg)
28/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Retour sur l’exemple 2 de sous-requête
Donner le titre des films de même genre et sortie la même annéeque le film "Lucy".
SELECT F .titreFROM Film FWHERE (F .annee, F .genre) = (SELECT F .annee, F .genre
FROM Film FWHERE F .titre = ’Lucy’) ;
Résultat :titre
Edge of tomorrowLucy
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 28
![Page 29: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/29.jpg)
29/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Retour sur l’exemple 2 de sous-requête
Pour résoudre le problème, il serait nécessaire de préciser dans larequête principale que les titres de film retournés ne doivent pasinclure ’Lucy’.Une façon de faire serait d’ajouter une condition dans le WHEREde la requête principale.
Donner le titre des films de même genre et sortie la même annéeque le film "Lucy".
SELECT F .titreFROM Film FWHERE F .titre != ’Lucy’AND (F .annee, F .genre) = (SELECT F .annee, F .genre
FROM Film FWHERE F .titre = ’Lucy’) ;
Résultat : titreEdge of tomorrow
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 29
![Page 30: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/30.jpg)
30/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Retour sur l’exemple 2 de sous-requête
Une autre façon de faire, serait de transformer la sous-requête ensous-requête corrélée. L’instance de Film dans la requête principalepeut être utilisée dans la sous-requête.
Donner le titre des films de même genre et sortie la même annéeque le film "Lucy".
SELECT F .titreFROM Film FWHERE (F .annee, F .genre) = (SELECT Fl .annee, Fl .genre
FROM Film FlWHERE Fl .titre = ’Lucy’AND Fl .idf != F .idf) ;
Résultat :
titreEdge of tomorrow
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 30
![Page 31: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/31.jpg)
31/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Les sous-requêtes corrélées
Une sous-requête qui contientune référence (via un alias)à une instance de la requêteprincipale est nommée : Sous-requête corrélée.
Expression d’une requête corrélée
SELECT *FROM nomTable1 T1WHERE att1 IN (SELECT att3
FROM nomTable2T2WHERE T2.att4 = T1.att2) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 31
![Page 32: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/32.jpg)
32/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Les sous-requêtes corrélées
Expression d’une requête corrélée
SELECT *FROM nomTable1 T1WHERE att1 IN (SELECT att3
FROM nomTable2T2WHERE T2.att4 = T1.att2) ;
Remarque: Il est important de comprendre que contrairement àT1 qui apparaît dans la sous-requête, T2 ne pourrait pas apparaîtrehors de la sous-requête.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 32
![Page 33: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/33.jpg)
33/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
EXISTS (sous-requête corrélée)
Pour ajouter une condition portant non pas que les valeursretournées par la sous-requête mais sur l’existence ou non de tuplesvérifiant la sous-requête, il est possible d’utiliser EXISTS et le plussouvent la combinaison NOT EXISTS .
Expression de la contrainte : "La valeur de l’attribut att1 estinférieurs strictement à au moins une des valeurs de att3 retournéespar la sous-requête"
SELECT *FROM nomTable1 T1WHERE EXISTS (SELECT ∗
FROM nomTable2T2)WHERE T1.att4 = T2.att2) ;
Remarque: Il est important de noter qu’il n’y a pas d’attribut à lagauche du mot EXISTS .
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 33
![Page 34: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/34.jpg)
34/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 7 de sous-requête
Donner le nom des réalisateurs qui n’ont jamais fait jouer ’JeanDUJARDIN’ dans un de leur film.
SELECT Ar .nomFROM Artiste ArWHERE NOT EXISTS (SELECT F .*
FROM Film F JOIN JoueDans JDON F .idf = JD.idfJOIN Artiste A ON A.idp = JD.idpWHERE Ar .idp = F .realAND A.prenom = ’Jean’AND A.nom = ’DUJARDIN’) ;
Résultat :nom
BESSONLIMAN
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 34
![Page 35: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/35.jpg)
35/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Question ?
Que retourne la requête suivante ?
SELECT A.prenom, A.nomFROM Artiste AWHERE NOT EXISTS (SELECT F .*
FROM Film F JOIN Artiste ArON F .real = Ar .idpWHERE Ar .prenom = ’Michel’AND Ar .nom = ’HAZANAVICIUS’AND NOT EXISTS (SELECT JD.*
FROM JoueDans JDWHERE JD.idf = F .idfAND JD.idp = A.idp )) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 35
![Page 36: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/36.jpg)
36/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Sous-requête imbriquée
Est-ce qu’une sous-requête peut elle-même une sous-requête ?Oui ! nous parlons alors de sous-requêtes imbriquées
Expression de sous-requêtes imbriquées
SELECT *FROM nomTable1 T1WHERE T1.att1IN
(SELECT att2FROM nomTable2T2WHERE T2.att3IN
(SELECT att4FROM nomTable3T3WHERE ...))) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 36
![Page 37: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/37.jpg)
37/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Bilan sur les sous-requêtes
Bien réfléchir au résultat retourné par une sous-requête(nombre de lignes, de colonnes)Utiliser un comparateur ou un opérateur approprié selon cerésultat
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 37
![Page 38: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/38.jpg)
38/86
Plan
1 Requête avec sous-requêtes
2 Combinaison de requêtes
3 Les regroupements
4 Condition de sélection sur les groupes
![Page 39: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/39.jpg)
39/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Remarque
Certains besoins d’utilisateurs peuvent s’exprimer de la façonsuivante :
ExemplesDonner les noms de tous les acteurs et les noms des rôles defilms de genre ’SF’.Donner le nom de tous les acteurs/actrices.Donner le nom des acteurs-réalisateurs.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 39
![Page 40: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/40.jpg)
40/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateur d’union de requêtes : UNION
Syntaxe d’une union de requêtes est :
(SELECT att1 , att2 ...FROM nomTable1WHERE < condition_de_selection >...)UNION(SELECT att3 , att4 ...FROM nomTable2WHERE < condition_de_selection >...) ;
Le UNION permet d’unir le résultat de deux requêtes SQLLes clauses SELECT des deux requêtes doivent retourner lemême nombre d’attributs et des attributs de même types
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 40
![Page 41: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/41.jpg)
41/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple d’UNION
Donner les noms de tous les acteurs/actrices et les noms des rôlesde films de genre ’SF’.
(SELECT A.nomFROM Artiste AWHERE A.ida IN
(SELECT ida FROM JoueDans)) UNION(SELECT JD.nomFROM JoueDans JD JOIN Film FON JD.idf = F .idfWHERE F .genre = ’SF’) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 41
![Page 42: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/42.jpg)
42/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateur d’intersection de requêtes : INTERSECT
Syntaxe d’une intersection de requêtes est :
(SELECT att1 , att2 ...FROM nomTable1WHERE < condition_de_selection >...)INTERSECT(SELECT att3 , att4 ...FROM nomTable2WHERE < condition_de_selection >...) ;
Le INTERSECT permet de retourner les tuples communs àdeux requêtes SQL.Les clauses SELECT des deux requêtes doivent retourner lemême nombre d’attributs et des attributs de même types.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 42
![Page 43: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/43.jpg)
43/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple d’INTERSECT
Donner le nom des acteurs/actrices qui sont aussiréalisateurs/trices .
SELECT A.nomFROM Artiste AWHERE A.ida IN
((SELECT ida FROM JoueDans)INTERSECT(SELECT real FROM Film)
) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 43
![Page 44: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/44.jpg)
44/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateur d’intersection de requêtes : INTERSECT
Remarque:L’opérateur INTERSECT n’est pas implémenté dans MySQL ! Ilest possible de le remplacer par une jointure.
Donner le nom des acteurs/actrices qui sont aussiréalisateurs/trices .
SELECT A.nomFROM Artiste A JOIN JoueDans JDON A.ida = JD.ida JOIN Film FON A.ida = F .real ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 44
![Page 45: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/45.jpg)
45/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateur de différence entre des requêtes : MINUS
Syntaxe d’une intersection de requêtes est :
(SELECT att1 , att2 ...FROM nomTable1WHERE < condition_de_selection >...)MINUS(SELECT att3 , att4 ...FROM nomTable2WHERE < condition_de_selection >...) ;
Le MINUS permet de retirer du résultat de la premièrerequête les tuples communs avec la seconde requête.Les clauses SELECT des deux requêtes doivent retourner lemême nombre d’attributs et des attributs de même types.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 45
![Page 46: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/46.jpg)
46/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple de MINUS
Donner le nom de tous les acteurs/actrices qui n’ont jamais réaliséde films.
SELECT A.nomFROM Artiste AWHERE A.ida IN
((SELECT ida FROM JoueDans)MINUS(SELECT real FROM Film)
) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 46
![Page 47: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/47.jpg)
47/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateur de différence entre des requêtes : MINUS
Remarque:L’opérateur MINUS n’est pas implémenté dans MySQL ! Il estpossible de le remplacer par une sous-requête avec une NOTIN .
Donner le nom des acteurs/actrices qui sont aussiréalisateurs/trices .
SELECT A.nomFROM Artiste A JOIN JoueDans JDON A.ida = JD.idaWHERE A.ida NOT IN (SELECT real FROM Film) ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 47
![Page 48: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/48.jpg)
48/86
Plan
1 Requête avec sous-requêtes
2 Combinaison de requêtes
3 Les regroupements
4 Condition de sélection sur les groupes
![Page 49: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/49.jpg)
49/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Remarque
Certains besoins d’utilisateurs peuvent s’exprimer de la façonsuivante :
ExemplesPour chaque artiste, donner le nombre de films dans lequelil/elle a joué depuis 2010.Pour chaque film, donner le salaire moyen des artistes associésau film.Pour chaque film, donner le montant du budget consacré ausalaire des acteurs/actrices.
Ce que nous avons appris de la syntaxe SQL jusqu’à présent, nenous permet pas de répondre à ces besoins.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 49
![Page 50: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/50.jpg)
50/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Intuition
Pour chaque artiste, donner le nombre de films dans lequel il/elle ajoué depuis 2010.Il faudrait pouvoir regrouper les tuples en fonction de l’identifiantdes artistes et compter le nombre d’identifiants de film quiapparaissent et ce, pour chaque groupe de tuples.
Pour chaque film, donner le salaire moyen des artistes associés aufilm.Il faudrait pouvoir regrouper les tuples en fonction de l’identifiantdes films, lister les salaires associés à chaque film et calculer lamoyenne des salaires présents dans chaque groupe de tuples.
⇒ Apprenons a construire des groupes de tuples !
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 50
![Page 51: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/51.jpg)
51/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Clause de regroupement : GROUP BY
Syntaxe d’une requête SQL avec regroupement :
SELECT att1 , att2 ...FROM nomTable1WHERE < condition_de_selection >GROUP BY atti , attj ;
Le GROUP BY , exécuté après le WHERE , indique de procéderà une répartition du résultat en groupes de tuples :
Deux tuples sont dans un groupe s’il ont mêmes valeurs sur lesattributs spécifiés dans le GROUP BY (i.e., atti , attj)Si deux tuplets sont dans deux groupes différents, alors il y aau moins un attribut parmi ceux spécifiés dans le GROUP BYpour lequel ils ont une valeur différente.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 51
![Page 52: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/52.jpg)
52/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Questions !
Combien de tuples sont retournés par groupe dans le résultat ?
La requête ne renvoie qu’un seul tuple par groupe.
Les attributs présents dans le SELECT et le ORDER BYont-il un lien avec les attributs présents dans le GROUP BY ?
OUI ! Le SELECT et le ORDER BY ne peuvent utiliser quedes attributs présents dans le GROUP BY .
Dans un groupe, la valeur pour les attributs du GROUP BYest fixe,Mais la valeur pour les autres attributs peut varier, d’où leurutilisation directe impossible (quelle valeur utiliser ?)∗
∗En fait, pour pouvoir les utiliser, il sera nécessaire d’utiliser des fonctionsde regroupements
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 52
![Page 53: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/53.jpg)
52/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Questions !
Combien de tuples sont retournés par groupe dans le résultat ?
La requête ne renvoie qu’un seul tuple par groupe.
Les attributs présents dans le SELECT et le ORDER BYont-il un lien avec les attributs présents dans le GROUP BY ?
OUI ! Le SELECT et le ORDER BY ne peuvent utiliser quedes attributs présents dans le GROUP BY .
Dans un groupe, la valeur pour les attributs du GROUP BYest fixe,Mais la valeur pour les autres attributs peut varier, d’où leurutilisation directe impossible (quelle valeur utiliser ?)∗
∗En fait, pour pouvoir les utiliser, il sera nécessaire d’utiliser des fonctionsde regroupements
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 52
![Page 54: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/54.jpg)
53/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 1 de GROUP BY
Donner les nationalités, autre qu’américaines, représentées parmiles artistes.
SELECT A. nationFROM Artiste AWHERE A. nation != ’USA’GROUP BY A. nation ;
Artiste(ida, nom, prenom, nation)ida prenom nom nation1 Jean DUJARDIN FR2 Scarlett JOHANSSON USA3 Tom CRUISE USA4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK7 Doug LIMAN USA8 Luc BESSON FR9 Michel HAZANAVICIUS FR
Résultat :nationFR
FR-ARUK
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 53
![Page 55: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/55.jpg)
54/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A. nationFROM Artiste AWHERE A. nation != ’USA’GROUP BY A. nation ;
Artiste(ida, nom, prenom, nation)ida prenom nom nation1 Jean DUJARDIN FR2 Scarlett JOHANSSON USA3 Tom CRUISE USA4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK7 Doug LIMAN USA8 Luc BESSON FR9 Michel HAZANAVICIUS FR
Étape 1 - Application des conditions de sélection :"...WHERE A. nation != ’USA’".
ida prenom nom nation1 Jean DUJARDIN FR4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK8 Luc BESSON FR9 Michel HAZANAVICIUS FR
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 54
![Page 56: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/56.jpg)
55/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A. nationFROM Artiste AWHERE A. nation != ’USA’GROUP BY A. nation ;
Artiste(ida, nom, prenom, nation)ida prenom nom nation1 Jean DUJARDIN FR2 Scarlett JOHANSSON USA3 Tom CRUISE USA4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK7 Doug LIMAN USA8 Luc BESSON FR9 Michel HAZANAVICIUS FR
Étape 2 - Application du regroupement :"... GROUP BY A. nation"
ida prenom nom nation1 Jean DUJARDIN FR5 Dany BOON FR8 Luc BESSON FR9 Michel HAZANAVICIUS FR
4 Bérénice BEJO FR-AR
6 Emily BLUNT UK
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 55
![Page 57: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/57.jpg)
56/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A. nationFROM Artiste AWHERE A. nation != ’USA’GROUP BY A. nation ;
Artiste(ida, nom, prenom, nation)ida prenom nom nation1 Jean DUJARDIN FR2 Scarlett JOHANSSON USA3 Tom CRUISE USA4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK7 Doug LIMAN USA8 Luc BESSON FR9 Michel HAZANAVICIUS FR
Étape 3 - Application de la projection :"SELECT A. nation"
nationFRFRFRFR
FR-AR
UK
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 56
![Page 58: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/58.jpg)
57/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A. nationFROM Artiste AWHERE A. nation != ’USA’GROUP BY A. nation ;
Artiste(ida, nom, prenom, nation)ida prenom nom nation1 Jean DUJARDIN FR2 Scarlett JOHANSSON USA3 Tom CRUISE USA4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK7 Doug LIMAN USA8 Luc BESSON FR9 Michel HAZANAVICIUS FR
Étape 4 - Fusion des résultats pour ne retourner qu’un tuple pargroupe
nationFR
FR-ARUK
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 57
![Page 59: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/59.jpg)
58/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Fonction d’agrégation
Fonctions d’agrégation (ou opérateurs de regroupements) :Fonctions permettant :
de dénombrer des tuples (count)de calculer une moyenne (avg), une somme cumulée (sum), unminimum (min), un maximum (max), ...
Ces fonctions d’agrégation :sont utilisables en conjonction avec un GROUP BY pours’appliquer sur les attributs qui ne font pas partie du GROUPBYapparaissent pour l’instant uniquement dans le SELECT etdans le ORDER BY
Remarque: On ne peut pas les utiliser dans le WHERE , carcomme nous l’avons vu dans le déroulement de l’exécution de larequête le WHERE a lieu avant regroupement
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 58
![Page 60: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/60.jpg)
59/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Remarque sur les fonctions d’agrégations
A propos des fonctions d’agrégation :
Il est possible d’utiliser des opérateurs d’agrégation sansGROUP BY . Si aucun GROUP BY n’est spécifié dans larequête, l’opérateur s’applique à toutes les lignes renvoyées parla requête.
Il est possible de placer le mot clé DISTINCT dans lafonction de regroupement (avant l’attribut) pour appliquer lafonction d’agrégation en considérant ou non les doublons
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 59
![Page 61: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/61.jpg)
60/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateur COUNT
count(atti ) : le nombre d’occurrences de atti dans le groupe
SELECT att1 , COUNT(att2) AS NBFROM nomTable1WHERE < condition_de_selection >GROUP BY att1 ;
Remarque:Les n-uplets pour lesquels e vaut NULL ne sont pas comptés
Quand il ne s’agit pas de dénombrer des valeurs maisuniquement les tuples composant chaque groupe, il estpossible d’écrire COUNT(∗).
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 60
![Page 62: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/62.jpg)
61/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 1 d’opérateur COUNT
Pour chaque nationalité, donner le nombre d’artistes ayant cettenationalité.
SELECT A. nation, COUNT(*) AS NbArtistesFROM Artiste AGROUP BY A. nation ;
Artiste(ida, nom, prenom, nation)ida prenom nom nation1 Jean DUJARDIN FR2 Scarlett JOHANSSON USA3 Tom CRUISE USA4 Bérénice BEJO FR-AR5 Dany BOON FR6 Emily BLUNT UK7 Doug LIMAN USA8 Luc BESSON FR9 Michel HAZANAVICIUS FR
Résultat :nation NbArtistesFR 4
USA 3FR-AR 1
UK 1
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 61
![Page 63: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/63.jpg)
62/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 2 d’opérateur COUNT
Donner le nombre d’années de sortie de film représentées dans labase.
SELECT COUNT(DISTINCT annee) AS NbAnneesFROM Film ;
Film(idf, titre, annee, genre, real, budget)idf titre annee genre real budget1 Edge of tomorrow 2014 SF 7 1782 Lucy 2014 SF 8 403 The Artist 2011 Drame 9 94 OSS 117: Le Caire, Nid d’espions 2006 NULL 9 145 Bienvenue chez les Ch’tis 2008 Comédie 5 11
Résultat :
NbAnnees4
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 62
![Page 64: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/64.jpg)
63/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 3 d’opérateur COUNT
Pour chaque acteur/actrice français(e) dont on précisera le nom etle prénom, donner le nombre de films dans lequel il/elle a joué. Lerésultat du calcul sera nommé "NbFilms" et le résultat retournésera trié par ordre lexicographique sur le nom et le prénom desartistes
SELECT A.prenom, A.nom, COUNT(JD.idf) AS NbFilmsFROM Artiste A JOIN JoueDans JD ON A.idp = JD.idpWHERE A.nation LIKE ’%FR%’GROUP BY A.prenom, A.nom, A.idpORDER BY A.nom, A.prenom ;
Résultat :prenom nom NbFilmsBérénice BEJO 2
Dany BOON 1Jean DUJARDIN 2
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 63
![Page 65: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/65.jpg)
64/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A.prenom, A.nom, COUNT(JD.idf) AS NbFilmsFROM Artiste A JOIN JoueDans JD ON A.ida = JD.idaWHERE A.nation LIKE ’%FR%’GROUP BY A.prenom, A.nom, A.idaORDER BY A.nom, A.prenom ;
Étape 1 - Exécution de la jointure
ida prenom Artiste.nom nation idf JoueDans.nom sal1 Jean DUJARDIN FR 3 George Valentin 0,31 Jean DUJARDIN FR 4 Hubert Bonisseur de La Bath 0,22 Scarlett JOHANSSON USA 2 Lucy Miller 143 Tom CRUISE USA 1 Bill Cage 204 Bérénice BEJO FR-AR 4 Larmina El Akmar Betouche NULL4 Bérénice BEJO FR-AR 3 Peppy Miller NULL5 Dany BOON FR 5 Antoine Bailleul 1,36 Emily BLUNT UK 1 Rita Vrataski NULL
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 64
![Page 66: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/66.jpg)
65/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A.prenom, A.nom, COUNT(JD.idf) AS NbFilmsFROM Artiste A JOIN JoueDans JD ON A.ida = JD.idaWHERE A.nation LIKE ’%FR%’GROUP BY A.prenom, A.nom, A.idaORDER BY A.nom, A.prenom ;
Étape 2 - Exécution du WHERE
ida prenom Artiste.nom nation idf JoueDans.nom sal1 Jean DUJARDIN FR 3 George Valentin 0,31 Jean DUJARDIN FR 4 Hubert Bonisseur de La Bath 0,24 Bérénice BEJO FR-AR 4 Larmina El Akmar Betouche NULL4 Bérénice BEJO FR-AR 3 Peppy Miller NULL5 Dany BOON FR 5 Antoine Bailleul 1,3
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 65
![Page 67: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/67.jpg)
66/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A.prenom, A.nom, COUNT(JD.idf) AS NbFilmsFROM Artiste A JOIN JoueDans JD ON A.ida = JD.idaWHERE A.nation LIKE ’%FR%’GROUP BY A.prenom, A.nom, A.idaORDER BY A.nom, A.prenom ;
Étape 3 - Exécution du GROUP BY
ida prenom Artiste.nom nation idf JoueDans.nom sal1 Jean DUJARDIN FR 3 George Valentin 0,31 Jean DUJARDIN FR 4 Hubert Bonisseur de La Bath 0,2
4 Bérénice BEJO FR-AR 4 Larmina El Akmar Betouche NULL4 Bérénice BEJO FR-AR 3 Peppy Miller NULL
5 Dany BOON FR 5 Antoine Bailleul 1,3
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 66
![Page 68: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/68.jpg)
67/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A.prenom, A.nom, COUNT(JD.idf) AS NbFilmsFROM Artiste A JOIN JoueDans JD ON A.ida = JD.idaWHERE A.nation LIKE ’%FR%’GROUP BY A.prenom, A.nom, A.idaORDER BY A.nom, A.prenom ;
Étape 4 - Exécution du ORDER BY
ida prenom Artiste.nom nation idf JoueDans.nom sal4 Bérénice BEJO FR-AR 4 Larmina El Akmar Betouche NULL4 Bérénice BEJO FR-AR 3 Peppy Miller NULL
5 Dany BOON FR 5 Antoine Bailleul 1,3
1 Jean DUJARDIN FR 3 George Valentin 0,31 Jean DUJARDIN FR 4 Hubert Bonisseur de La Bath 0,2
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 67
![Page 69: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/69.jpg)
68/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT A.prenom, A.nom, COUNT(JD.idf) AS NbFilmsFROM Artiste A JOIN JoueDans JD ON A.ida = JD.idaWHERE A.nation LIKE ’%FR%’GROUP BY A.prenom, A.nom, A.idaORDER BY A.nom, A.prenom ;
Étape 5 - Exécution du SELECT
prenom nom NbFilmsBérénice BEJO 2
Dany BOON 1Jean DUJARDIN 2
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 68
![Page 70: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/70.jpg)
69/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateurs minet max
min(atti ) : la valeur minimale de l’attribut atti pour le groupe
max(atti ) : la valeur maximale de l’attribut atti pour le groupe
SELECT att1 , min(att2) AS MinValFROM nomTable1WHERE < condition_de_selection >GROUP BY att1 ;
SELECT att1 , max(att2) AS MaxValFROM nomTable1WHERE < condition_de_selection >GROUP BY att1 ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 69
![Page 71: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/71.jpg)
70/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple pour l’opérateur max
Pour chaque année, donner le budget du film ayant eu le plus grosbudget cette année-là. La valeur s’affichera sous le nom’LePlusCher’ et le résultat sera trié par ordre décroissante desannées.
SELECT F .annee, MAX(f .budget) AS LePlusCherFROM Film FGROUP BY F .anneeORDER BY F .annee DESC ;
Résultat :annee LePlusCher2014 1782011 92008 112006 14
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 70
![Page 72: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/72.jpg)
71/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple pour l’opérateur min
Pour chaque film dont on précisera le titre, donner le nom et leprénom des artistes qui ont reçu le plus petit salaire pour le film.
SELECT F .titre, A.prenom, A.nomFROM Film F JOIN JoueDans JD ON F .idf = JD.idfJOIN Artiste F ON A.ida = JD.idaWHERE JD.sal =
(SELECT min(JD2.sal)FROM JoueDans JD2WHERE JD2.idf = F .idf)
Résultat :titre prenom nom
Edge of tomorrow Tom CRUISELucy Scarlett JOHANSSON
The Artist Jean DUJARDINOSS 117 : Le Caire, Nid d’espions Jean DUJARDIN
Bienvenue chez les Ch’tis Dany BOON
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 71
![Page 73: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/73.jpg)
72/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Opérateurs avget sum
avg(atti ) : la moyenne de l’attribut atti pour le groupe
sum(atti ) : la somme cumulée de l’attribut atti pour le groupe
SELECT att1 , avg(att2) AS MinValFROM nomTable1WHERE < condition_de_selection >GROUP BY att1 ;
SELECT att1 , sum(att2) AS MaxValFROM nomTable1WHERE < condition_de_selection >GROUP BY att1 ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 72
![Page 74: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/74.jpg)
73/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple pour l’opérateur avg
Pour chaque film dont on précisera le titre, donner salaire moyendes artistes associés au film. La valeur calculée s’affichera sous lenom ’MoySal’
SELECT F .titre, avg(JD.sal) AS MoySalFROM Film F JOIN JoueDans JD ON F .idf = JD.idfGROUP BY F .titre, F .idf
Résultat :titre MoySal
Edge of tomorrow 20Lucy 14
The Artist 0.3OSS 117 : Le Caire, Nid d’espions 0.2
Bienvenue chez les Ch’tis 1.3
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 73
![Page 75: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/75.jpg)
74/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple pour l’opérateur sum
Pour chaque film dont on précisera le titre, donner le montant dubudget non consacré au salaire des acteurs/actrices. La valeurcalculée s’affichera sous le nom ’NonSal’
SELECT F .titre, F .budget -sum(JD.sal) AS NonSalFROM Film F JOIN JoueDans JD ON F .idf = JD.idfGROUP BY F .titre, F .budget, F .idf
Résultat :titre NonSal
Edge of tomorrow 20Lucy 14
The Artist 0.3OSS 117 : Le Caire, Nid d’espions 0.2
Bienvenue chez les Ch’tis 1.3
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 74
![Page 76: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/76.jpg)
75/86
Plan du cours
1 Requête avec sous-requêtes
2 Combinaison de requêtes
3 Les regroupements
4 Condition de sélection sur les groupes
![Page 77: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/77.jpg)
76/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Remarque
Certains besoins d’utilisateurs peuvent également s’exprimer de lafaçon suivante :
ExemplesDonner les années pour lesquelles au moins deux films sontsortis.Donner le titre des films dont le salaire moyen des acteurs estsupérieur à 1.Donner le titre des films dont au moins deux acteurs ont unsalaire supérieur à 0.5.
Ce dont nous avons besoin, c’est de pouvoir exprimer desconditions de sélection au niveau des groupes.
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 76
![Page 78: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/78.jpg)
77/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Sélection sur les groupes
Syntaxe d’une requête SQL avec sélection sur les groupes :
SELECT atti , attj , ...FROM nomTable1[ WHERE < condition_de_selection_de_tuples > ]GROUP BY atti , attj , ...HAVING < condition_de_selection_de_groupe > ;
Clause HAVING permet de sélectionner les groupes quisatisfont la condition< condition_de_selection_de_groupe >
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 77
![Page 79: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/79.jpg)
78/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Remarque
Il est important de distinguer les clauses WHERE et HAVING
La clause WHERE s’applique sur les tuples de manièreindividuelle,et ce avant le regroupement fait par le GROUP BY .La clause HAVING s’applique sur les groupes et non pas surles tuples individuels.
⇒ Il n’y aura JAMAIS d’opérateurs d’agrégation directementdans un WHERE .
La clause HAVING est exécutée entre le GROUP BY et leORDER BY .Le HAVING peut porter sur :
les attributs spécifiés dans le GROUP BYle résultat d’opérateurs d’agrégation (appliqués sur desattributs qui ne sont pas spécifié dans le GROUP BY )
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 78
![Page 80: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/80.jpg)
79/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 1 pour le HAVING
Donner les années pour lesquelles au moins deux films sont sortisSELECT F .anneeFROM Film FGROUP BY F .anneeHAVING count(*) >= 2 ;
Film(idf, titre, annee, genre, real, budget)idf titre annee genre real budget1 Edge of tomorrow 2014 SF 7 1782 Lucy 2014 SF 8 403 The Artist 2011 Drame 9 94 OSS 117: Le Caire, Nid d’espions 2006 NULL 9 145 Bienvenue chez les Ch’tis 2008 Comédie 5 11
Résultat :
annee2014
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 79
![Page 81: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/81.jpg)
80/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Exemple 2 pour le HAVING
Donner le titre des films sortis depuis 2010 dont le salaire moyendes acteurs est supérieur strictement à 1 et préciser cette valeur desalaire moyen en l’affichant sous le nom ’MoySalSup1’. Le résultatsera trié sur le titre selon l’ordre lexicographique inverse.
SELECT F .titre, avg(JD.sal) AS MoySalSup1FROM Film F JOIN JoueDans JD ON F .idf = JD.idfWHERE F .annee >= 2010GROUP BY F .titre, F .idfHAVING MoySalSup1 > 1ORDER BY F .titre DESC ;
Résultat :titre MoySalSup1Lucy 14
Edge of tomorrow 20
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 80
![Page 82: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/82.jpg)
81/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT F .titre, avg(JD.sal) AS MoySalSup1FROM Film F JOIN JoueDans JD ON F .idf = JD.idfWHERE F .annee >= 2010GROUP BY F .titre, F .idfHAVING MoySalSup1 > 1ORDER BY F .titre DESC ;
Étape 1 - Exécution de la jointure
idf titre annee genre real budget ida nom sal1 Edge of tomorrow 2014 SF 7 178 3 Bill Cage 201 Edge of tomorrow 2014 SF 7 178 6 Rita Vrataski NULL2 Lucy 2014 SF 8 40 2 Lucy Miller 143 The Artist 2011 Drame 9 9 1 George Valentin 0.33 The Artist 2011 Drame 9 9 4 Peppy Miller NULL4 OSS 117 : Le Caire ... 2006 NULL 9 14 1 Hubert Bonisseur ... 0.24 OSS 117 : Le Caire ... 2006 NULL 9 14 4 Larmina El Akmar ... NULL5 Bienvenue chez les Ch’tis 2008 Comédie 5 11 5 Antoine Bailleul 1.3
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 81
![Page 83: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/83.jpg)
82/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT F .titre, avg(JD.sal) AS MoySalSup1FROM Film F JOIN JoueDans JD ON F .idf = JD.idfWHERE F .annee >= 2010GROUP BY F .titre, F .idfHAVING MoySalSup1 > 1ORDER BY F .titre DESC ;
Étape 2 - Exécution du WHERE
idf titre annee genre real budget ida nom sal1 Edge of tomorrow 2014 SF 7 178 3 Bill Cage 201 Edge of tomorrow 2014 SF 7 178 6 Rita Vrataski NULL2 Lucy 2014 SF 8 40 2 Lucy Miller 143 The Artist 2011 Drame 9 9 1 George Valentin 0.33 The Artist 2011 Drame 9 9 4 Peppy Miller NULL
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 82
![Page 84: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/84.jpg)
83/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT F .titre, avg(JD.sal) AS MoySalSup1FROM Film F JOIN JoueDans JD ON F .idf = JD.idfWHERE F .annee >= 2010GROUP BY F .titre, F .idfHAVING MoySalSup1 > 1ORDER BY F .titre DESC ;
Étape 3 - Exécution du GROUP BY
idf titre annee genre real budget ida nom sal1 Edge of tomorrow 2014 SF 7 178 3 Bill Cage 201 Edge of tomorrow 2014 SF 7 178 6 Rita Vrataski NULL
2 Lucy 2014 SF 8 40 2 Lucy Miller 14
3 The Artist 2011 Drame 9 9 1 George Valentin 0.33 The Artist 2011 Drame 9 9 4 Peppy Miller NULL
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 83
![Page 85: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/85.jpg)
84/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT F .titre, avg(JD.sal) AS MoySalSup1FROM Film F JOIN JoueDans JD ON F .idf = JD.idfWHERE F .annee >= 2010GROUP BY F .titre, F .idfHAVING MoySalSup1 > 1ORDER BY F .titre DESC ;
Étape 4 - Exécution du HAVING
idf titre annee genre real budget ida nom sal1 Edge of tomorrow 2014 SF 7 178 3 Bill Cage 201 Edge of tomorrow 2014 SF 7 178 6 Rita Vrataski NULL
2 Lucy 2014 SF 8 40 2 Lucy Miller 14
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 84
![Page 86: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/86.jpg)
85/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT F .titre, avg(JD.sal) AS MoySalSup1FROM Film F JOIN JoueDans JD ON F .idf = JD.idfWHERE F .annee >= 2010GROUP BY F .titre, F .idfHAVING MoySalSup1 > 1ORDER BY F .titre DESC ;
Étape 4 - Exécution du ORDER BY
idf titre annee genre real budget ida nom sal2 Lucy 2014 SF 8 40 2 Lucy Miller 14
1 Edge of tomorrow 2014 SF 7 178 3 Bill Cage 201 Edge of tomorrow 2014 SF 7 178 6 Rita Vrataski NULL
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 85
![Page 87: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/87.jpg)
86/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Comment s’est exécutée la requête ?
SELECT F .titre, avg(JD.sal) AS MoySalSup1FROM Film F JOIN JoueDans JD ON F .idf = JD.idfWHERE F .annee >= 2010GROUP BY F .titre, F .idfHAVING MoySalSup1 > 1ORDER BY F .titre DESC ;
Étape 5 - Exécution du SELECT
titre MoySalSup1Lucy 14
Edge of tomorrow 20
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 86
![Page 88: BDW1 : Bases de données et Programmation Web SQL : Partie ...€¦ · Scarlett JOHANSSON Tom CRUISE Dany BOON UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 10. 11/86](https://reader033.vdocuments.us/reader033/viewer/2022051311/60375b947d7ea32a3031a44f/html5/thumbnails/88.jpg)
87/86
Requête avec sous-requêtes Combinaison de requêtes Les regroupements Condition de sélection sur les groupes
Une requête SQL
SELECT a.nom, a.prenom, count(DISTINCT ja.idf) AS nbFROM Artiste a JOIN JoueDans ja ON a.ida = ja.ida,Artiste b JOIN JoueDans jb ON b.ida = jb.idaWHERE a.nation = b.nationAND a.idf IN (SELECT f.idf
FROM FilmWHERE budget > 15)
AND NOT EXISTS (SELECT *FROM joueDans jWHERE j.ida <> jb.idaAND j.nom LIKE ’%Miller%’)
GROUP BY a.ida, a.nom, a.prenomHAVING nb > 1ORDER BY a.nom, a.prenom DESC ;
UCBL - Dept. Info. - Nicolas Lumineau BDW1 : BD & Prog. Web 87