Upload
amaya-goodwin
View
38
Download
0
Embed Size (px)
DESCRIPTION
Le langage SQL. Opérations sur les requêtes. MCD : Modèle conceptuel de données. Fournir. Situer. Commander. Habiter. VILLES. CLIENTS. PRODUITS. FOURNISSEURS. 1,n. 1,n. Fournisseur Nom. Villes Nbh. Produit Libelle Prix Couleur Origine Stock. Client Nom. Quantite. Quantite. - PowerPoint PPT Presentation
Citation preview
Opérations sur les requêtes
MCD : Modèle conceptuel de données
PRODUITS
ProduitLibellePrixCouleurOrigineStock
CLIENTS
ClientNom
VILLES
VillesNbh
FOURNISSEURSFournisseur
Nom
Commander
Quantite
Habiter
Situer
Fournir
Quantite
1,n
1,11,n
1,n
1,n
1,n
1,1
1,n
Descriptif des tablesPRODUITS (Produit , Libelle , Prix , Couleur , Origine , Stock)
CLIENTS (Client , Nom , #Ville)
FOURNISSEURS (Founisseur , Nom , #Ville)
VILLES (Ville , Nbh)
Commander (#Client, #Produit , Quantite)
Fournir (#Founisseur, #Produit, Quantite)
La divisionQuestion
Comment afficher les numéros des clients qui ont commandé tous les produits ?
Réponse Il suffit de compter les lignes de commandes passées par
chaque client et ne retenir que ceux dont ce nombre est égal au nombre de produits.
SELECT ClientFROM CommanderGROUP BY ClientHAVING Count(DISTINCT PRODUIT) =(
SELECT Count(*) FROM PRODUITS)
Nombre de lignes de commandes par client.
Nombre de lignes de la table PRODUITS
L’UnionSELECT Colonne1, Colonne2, …, ColonneN
FROM [Table 1]
WHERE [Condition1]
UNION [ALL] (ne supprime pas les doublons)
SELECT Colonne1’, Colonne2’, …, ColonneN’
FROM [Table 1’]
WHERE [Condition2]
Le mot clé « ALL » permet de spécifier que l’on désire voir les doublons apparaitre. S’il est absent les doublons n’apparaitront pas dans le résultat de la requête.
L’Union : ExempleQuestion
Comment afficher les libellés des produits commandés par les clients numéro « 7 » ou numéro « 12 » ?
RéponseIl faut effectuer une union entre les deux ensembles
(union compatible).
L’Union : Résultat sans doublons
SELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.Produit = B.ProduitWHERE Client = 7UNIONSELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.produit = B.produitWHERE Client = 12
Requête A
Requête B
L’Union : Résultat avec doublons
SELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.Produit = B.ProduitWHERE Client = 7UNION ALLSELECT LibelleFROM PRODUITS A INNER JOIN Commander B ON A.produit = B.produitWHERE Client = 12
Requête A
Requête B
On garde les
doublons
L’Union : Résultats
Libelle
Cerise
Pomme
Libelle
Pomme
Mangue
Ananas
Libelle
Cerise
Pomme
Mangue
Ananas
Libelle
Cerise
Pomme
Pomme
Mangue
Ananas
Requête A Requête B
UNION
Sans doublons [ALL] : Avec doublons
L’IntersectionSELECT Colonne1, Colonne2, …, ColonneN
FROM [Table 1]
WHERE [Condition1]
INTERSECT
SELECT Colonne1’, Colonne2’, …, ColonneN’
FROM [Table 1’]
WHERE [Condition2]
L’Intersection : ExempleQuestion
Comment afficher les numéros des clients ayant commandé des produits de couleur inconnue et des produits de couleur « rouge ».
RéponseRéaliser l’intersection entre les deux ensembles.
L’Intersection : Exemple [2]
SELECT ClientFROM Commander A INNER JOIN PRODUITS B ON A.Produit = B.ProduitWHERE Couleur is nullINTERSECTSELECT ClientFROM Commander A INNER JOIN PRODUITS B ON A.Produit = B.ProduitWHERE Couleur = ‘rouge’
Requête A
Requête B
L’Intersection : Résultats
Client
1
5
5
6
9
9
10
11
12
Client
5
5
7
9
9
10
10
Client
5
9
10
Requête A
Requête B
INTERSECT
La DifférenceSELECT Colonne1, Colonne2, …, ColonneN
FROM [Table 1]
WHERE [Condition1]
MINUS
SELECT Colonne1’, Colonne2’, …, ColonneN’
FROM [Table 1’]
WHERE [Condition2]
La Différence : ExempleQuestion
Comment trouver les numéros des clients qui n’ont qui n’ont jamais passer de commande ?
RéponseÔter les numéros des clients ayant commandé quelque
chose de la liste des numéros de tous les clients.
SELECT Client FROM CLIENTSMINUSSELECT DISTINCT Client FROM Commander
Le qualificateur ALLLe qualificateur « ALL » permet de vérifier une relation entre un élément et un ensemble d’éléments de même type.
SELECT Colonne1, Colonne2, …, ColonneN
FROM [Table1]
WHERE [Condition1]
AND Colonne1 ALL (
SELECT Colonne1
FROM [Table2]
WHERE [Condition2]
)
Ou signifie : >, <, >=, <=, <>.
Le qualificateur ALL : ExempleQuestion
Trouver les libellés des produits moins chers que tous les produits de couleur « rouge ».
RéponseConstruire un ensemble constitué des prix des produits
de couleur « rouge ».Afficher les libellés et les prix des produits moins chers
que tous les éléments de l’ensemble précédemment constitué.
Le qualificateur ALL : RésultatSELECT Libelle, PrixFROM PRODUITSWHERE Couleur != ‘rouge’AND Prix < ALL (
SELECT Prix FROM PRODUITS WHERE Couleur = ‘rouge’
)
Prix
2,1
3,2
Libelle Prix
Ananas 1.5
Coing 0,75
Orange 1,3
Prune 1,3
Le qualificateur ANYIl s’agit de vérifier une relation entre un élément et au moins l’un des éléments d’un ensemble de même type.
SELECT Colonne1, Colonne2, …, ColonneN
FROM [Table1]
WHERE [Condition1]
AND Colonne1 ANY (
SELECT Colonne1
FROM [Table2]
WHERE [Condition2]
)
Ou signifie : >, <, >=, <=, <>.
Le qualificateur ANY : ExempleQuestion
Trouver les libellés des produits plus chers qu’un produit de couleur « rouge ».
RéponseConstruire un ensemble constitué des prix des produits
de couleur « rouge ».Afficher les libellés et les prix des produits plus chers
qu’un des éléments de l’ensemble précédemment constitué.
Le qualificateur ANY : RésultatSELECT Libelle, PrixFROM PRODUITSWHERE Couleur != ‘rouge’AND Prix > ANY (
SELECT Prix FROM PRODUITS WHERE Couleur = ‘rouge’
)
Prix
2,1
3,2
Libelle Prix
Figue 2,52
Date 3,15
Kaki 3,11
Litchi 2,5
L’opérateur EXISTSPermet de savoir si un « SELECT » produit au moins une ligne « VRAI » ou ne produit aucune ligne « FAUX ».
SELECT Colonne1, Colonne2, …, ColonneN
FROM [Table1]
WHERE EXISTS (
SELECT Colonne1
FROM [Table2]
WHERE [Condition2]
)
L’opérateur EXISTS : ExempleQuestion
Trouver les numéros et les noms des clients ayant commandé au moins un produit
RéponseIls s’agit des clients pour lesquels il existe au moins un
enregistrement dans la table « Commander ».
L’opérateur EXISTS : RésultatSELECT Client, NomFROM CLIENTSWHERE EXISTS (
SELECT Client FROM Commander)
Client Nom
1 Maynard
2 Gorgeret
4 Bedin
5 Corgier
6 Goujon
Le client numéro 3 n’a passé aucune commande.