Vous êtes sur la page 1sur 34

& Sous-requêtes

Présenté par : Mme N. BENMOUSSA

Cycle d’Ingénieurs
PLAN
I. Définitions Jointure/Vue/Sous-requête
II. Types de jointures
III. Exemples de sous-requêtes
IV. Tables et syntaxes
V. Applications

2
DÉFINITION

La jointure est une association de


plusieurs tables ou vues de la BDD par
le biais d’un lien logique de données.
Ce lien est vérifié par le biais
d'un prédicat.
Le résultat de l'opération est une
nouvelle table.

3
DÉFINITION

Une vue est une table virtuelle. Elle se compose de lignes et de


colonnes comme un tableau.

Exemples :

1. CREATE VIEW "nom de vue" AS "instruction SQL";

2. SELECT * FROM V_REGION;

4
TYPES DE JOINTURES

5
PRINCIPE

6
EXEMPLE 1

7
EXEMPLE 2

8
EXEMPLE 3

9
REQUETES
&
SOUS REQUETES

10
A RETENIR
Requête sélection : ne récupère que les données souhaitées
Requête scalaire : récupère 1 ligne et 1 attribut (1 valeur ou 0 valeur )
Requête d'Analyse croisée : comparer les valeurs d'un champ par
rapport à un autre.
Requête action : ajoute/modifie/supprime des éléments de la BDD.
Sous-requête = requête imbriquée = sous-sélection : composée de
requête principale et une autre secondaire.

11
REQUÊTE SÉLECTION
SELECT NomClt
FROM TClt
Where CAClt >=10000 MAD

SELECT nom, COUNT(nom) AS nb_noms FROM Etudiants


GROUP BY nom ORDER BY COUNT(nom) DESC

12
REQUÊTE SCALAIRE

SELECT Villedépôt
FROM Dépôt
Where Nomdépôt= ‘ZoneA’ ===➔ (nom unique)

NB : = ; like ; > ; < ; >= ; <= ; …

13
REQUÊTE D'ANALYSE CROISÉE
Retourner les dates d'achat sous forme de lignes, le Service Pack pivoté
sous forme de colonnes et compter le nombre de serveurs de la table
Servers :
TRANSFORM Count(T_servers.svr_Name) As CountServers
SELECT T_Servers.svr_achat_Date
FROM T_Servers
GROUP BY T_Servers.svr_achat_Date
PIVOT T_Servers.svr_As_Service_Pack;

NB :
0pérateurs de relation PIVOT et UNPIVOT servent à modifier
une expression table dans une autre table. PIVOT fait pivoter une
expression de table en activant les valeurs uniques d’une colonne de
l’expression en plusieurs colonnes dans la sortie. L’opérateur
UNPIVOT effectue l’opération inverse : il transforme les colonnes
d’une expression table en valeurs de colonne. 14
REQUÊTE D'ANALYSE CROISÉE
TRANSFORM Sum Cette instruction est exclusive à la requête analyse
(T_Jouet.ResteStock) AS croisée. Les fonctions de regroupement habituelles
SommeDeResteStock peuvent être utilisées : SUM, COUNT, MAX, MIN,
AVG, Etc.
SELECT T_Jouet.type Ce titre apparaîtra ligne par ligne, autant de fois qu'il
existe de type.
FROM T_Jouet 1 ou plusieurs Tables de base servant à l'élaboration de
la requête. Ex : avoir un regroupement des achats des
clients par genre d'article =➔ T_Client, T_Vente,
T_VenteDetail et T_Article)
GROUP BY Cette ligne permet de créer autant de colonnes que
T_Jouet.type nécessaire (1 colonne par type différent)
PIVOT T_Jouet.Genre; Ce champ doit être unique. C'est la détermination du
nombre de colonnes et le titrage de chacune d'entre elles
avec un genre différent. (UnPIVOT permet de faire
pivoter les données d'une colonne en plusieurs colonnes)
15
REQUÊTE ACTION
INSERT INTO commandes (id_client, date_commande,
date_livraison) VALUES(2343, '2021-10-20', '2021-11-10')

UPDATE produits SET prix = prix * 20 WHERE


type_produit = 'produits A'

DELETE nom_Clt FROM T_Client WHERE id_Clt = 512

16
SOUS-REQUÊTES
Une sous-requête = requête imbriquée = sous-sélection

C’est une requête "SELECT intégrée à la clause WHERE ou


HAVING d'une autre requête SQL.

17
EXEMPLES
DE
SOUS-REQUÊTES

18
SOUS-REQUÊTE 1
CodeClt NomClt PrénomClt VilleClt
1 Abyd Nora Fès
2 Rajawy Badr Casablanca
3 Najah Mohamed Fès

Pour afficher les clients habitant la même ville que Najah

SELECT *from Client where ville=(select ville from


Client where nom=‘Najah’);

19
SOUS-REQUÊTE 2
CodeClt NomClt PrénomClt VilleClt
1 Abyd Nora Fès
2 Rajawy Badr Casablanca
3 Najah Mohamed Fès

Pour afficher les clients habitant la même ville que Najah


et Rajawy

SELECT *f rom Client where ville IN(select ville from


Client where nom=‘Najah’ or nom=‘Rajawy’);

20
SOUS-REQUÊTES 3
CodePrdt Libellé Categorie Px QStock
1 PC Informatique 7000 10
2 Ballon Sport 300 30
3 Tablette Informatique 500 20

Pour afficher les produits appartenant à la même catégorie


que le produit N° 3.

SELECT * f rom Produit where categorie = (select


categorie from Produit where CodePrdt=3);

21
SOUS-REQUÊTES 4
CodePrdt Libellé Categorie Px QStock
1 PC Informatique 7000 10
2 Ballon Sport 300 30
3 Tablette Informatique 500 20

Pour afficher les produits dont le px > Tablette.

SELECT * from Produit where Px > (select Px from


Produit where Libellé=‘Tablette’);

22
SOUS-REQUÊTES 5
CodePrdt Libellé Categorie Px QStock
1 PC Informatique 7000 10
2 Ballon Sport 300 30
3 Tablette Informatique 500 20
4 Gant Sport 200 50

Pour afficher les produits dont le Prix est cher «Sport».

SELECT * from Produit where Px > (select max(Px)


from Produit where Categorie=‘Sport’);

SELECT * from Produit where Px > all (select Px from


Produit where Categorie=‘Sport’); 23
SOUS-REQUÊTES 6
CodePrdt Libellé Categorie Px QStock
1 PC Informatique 7000 10
2 Ballon Sport 300 30
3 Tablette Informatique 500 20
4 Gant Sport 200 50

SELECT * from Produit where Px > (select min(Px) from


Produit where Categorie=‘Sport’);

SELECT * from Produit where Px > any (select Px from


Produit where Categorie=‘Sport’);

24
SOUS-REQUÊTES 7
Professeurs Matières VH Prof M/re
CodeProf NomProf PrénomProf IdM/re Intitulé CodeProf IdM/re VH
1 Abyd Nora 1 BDD 1 3 20
2 Rajawy Badr 2 Algo 2 1 56
3 Najah Mohamed 3 Réseau 3 3 24

Afficher les professeurs qui enseignent les BDD et le Réseau (VH).

SELECT * from Professeurs, VHProfM/re, Matières


Where Professeurs.CodeProf=VHProfM/re.CodeProf
and Matières. IdM/re=VHProfM/re.IdM/re
and intitulé=‘BDD’
And CodeProf IN(select CodeProf from Professeurs, VHProfM/re, Matières
Where Professeurs.CodeProf=VHProfM/re.CodeProf
and Matières. IdM/re=VHProfM/re.IdM/re
And Intitulé=‘Réseau’);
25
SOUS-REQUÊTES 8
1. Ajouter 5% au salaire des Commerciaux ayant un âge supérieur à
l'âge moyen :

UPDATE Commerciaux
SET Salaire = Salaire * 5%
WHERE Age > (SELECT avg(Age )FROM Commerciaux )

2. Supprimer toutes les commandes n'ayant aucun article :


DELETE Cde FROM Commande
WHERE NumCde NOT IN (SELECT distinct NumCde
FROM ArticleCommandés);
26
APPLICATIONS

27
Application 1
CodeClt NomClt PrénomClt VilleClt
1 Abyd Nora Fès
2 Rajawy Badr Casablanca
3 Najah Mohamed Fès

TAF : De cette table :

1. Affichez les clients habitant la même ville que Najah


2. Affichez les clients habitant la même ville que Najah et Rajawy.

28
Application 2
Professeurs VH Prof Matière
CodePro NomProf PrénomProf VilleProf CodeProf IdM/re VH
f 1 3 20
1 Abyd Nora Rabat 2 1 56
2 Rajawy Badr Fès 3 3 24
3 Najah Mohamed Rabat
IdM/re Intitulé
1 BDD
Matières 2 Algo
3 Réseau

TAF :
De ces tables, affichez les professeurs enseignant le Total VH < VH
max.
29
Application 3

1. Créez les tables sus-présentées


2. Affichez le VH de chaque matière
3. Testez la sous-requête 7 (Voir slide 25)

30
TD
Créez les tables présentées ci-dessous et affichez le jeu
(nom_jeu) dont l'id est (id_jeu) possédé par (pseudo)

31
A TESTER
La sous-requête permet d'associer un id de jeu à un pseudo de
possesseur. La requête principale utilise les pseudos de la table
de membres pour les acheteurs uniquement.

32
A TESTER
Pour obtenir le nombre d'acheteur

33
BON APPRENTISSAGE

34

Vous aimerez peut-être aussi