• Aucun résultat trouvé

S.G.B.D. 1 TD n° 6 Introduction à ACCESS – Requêtes (2)

N/A
N/A
Protected

Academic year: 2022

Partager "S.G.B.D. 1 TD n° 6 Introduction à ACCESS – Requêtes (2)"

Copied!
3
0
0

Texte intégral

(1)

I.U.T. de Nice Côte d’Azur 2002-2003 Département Informatique

S.G.B.D. 1

TD n° 6

Introduction à ACCESS – Requêtes (2)

- CORRIGE SQL -

Objectif : créer sous Access et SQL des requêtes de jointures et des requêtes quantifiées (les requêtes portent

sur la BD MICRO, copier dans votre répertoire de travail le jeu d’essai qui se trouve sur //chopin/prof/dn/pub).

1. Requêtes de jointures

Jointures naturelles

1.1. Donner le produit cartésien de la table CATEGORIE avec la table PRODUIT.

SELECT *

FROM categorie C, produit P;

1.2. Donner la jointure naturelle de la table CATEGORIE avec la table PRODUIT.

SELECT *

FROM categorie C, produit P WHERE C.IdCat = P.IdCat ;

Ou

SELECT *

FROM categorie C INNER JOIN produit P ON C.IdCat = P.IdCat;

1.3. Donner toutes les informations sur les ventes des produits de marque IBM.

SELECT *

FROM vente V, produit P WHERE V.IdPro = P.IdPro AND P.Marque = 'IBM' Ou

SELECT *

FROM vente V INNER JOIN produit P ON V.IdPro = P.IdPro WHERE P.Marque='IBM'

1.4. Donner les désignations des produits achetés par les clients de Nice.

SELECT P.Désignation

FROM produit P, vente V, client C WHERE P.IdPro = V.IdPro

AND V.IdCli = C.IdCli AND C.Ville = 'Nice' Ou

SELECT P.Désignation

FROM produit P INNER JOIN

(client C INNER JOIN vente V ON C.IdCli = V.IdCli) ON P.IdPro = V.IdPro

WHERE C.Ville='Nice';

1.5. Donner les noms des clients qui ont acheté un PS ou ACCESS ou les 2 à la fois.

SELECT DISTINCT C.Nom

FROM client C, vente V, produit P WHERE C.IdCli = V.IdCli

AND V.IdPro = P.IdPro

AND P.Désignation IN ('PS','ACCESS')

(2)

2

Ou

SELECT C.Nom

FROM produit P INNER JOIN

(client C INNER JOIN vente V ON C.IdCli = V.IdCli) ON P.IdPro = V.IdPro

WHERE P.Désignation IN ('PS','ACCESS');

1.6. Donner les noms des clients qui ont acheté à la fois un PS et ACCESS.

SELECT DISTINCT C.Nom

FROM client C, vente V1, produit P1, vente V2, produit P2 WHERE C.IdCli = V1.IdCli AND C.IdCli = V2.IdCli

AND V1.IdPro = P1.IdPro AND P1.Désignation = 'PS' AND V2.IdPro = P2.IdPro AND P2.Désignation = 'ACCESS'

1.7. Donner les noms des clients qui se trouvent dans la même ville que Leblanc.

SELECT C1.Nom

FROM client C1, client C2 WHERE C1.Ville = C2.Ville AND C2.Nom = 'Leblanc' AND C1.Nom <> 'Leblanc'

1.8. Donner les désignations et les prix des produits de marque Microsoft ou Borland qui sont moins chers que ACCESS.

SELECT P1.Désignation, P1.PrixUht FROM produit P1

WHERE P1.Marque IN ('Microsoft', 'Borland') AND P1.PrixUht <= (

SELECT P2.PrixUht FROM produit P2

WHERE P2.Désignation = 'ACCESS' )

1.9. Donner les noms des clients qui ont acheté au moins 2 produits différents.

SELECT DISTINCT C.Nom

FROM client C, vente V1, vente V2 WHERE C.IdCli = V1.IdCli AND C.IdCli = V2.IdCli AND V1.IdPro <> V2.IdPro

1.10. Donner les noms des clients ayant acheté plusieurs produits à moins de 15 jours d’intervalle.

SELECT DISTINCT C.Nom

FROM client C, vente V1, vente V2 WHERE C.IdCli = V1.IdCli AND C.IdCli = V2.IdCli

AND (V2.Date - V1.Date) <= 15

Jointures externes

1.11. Lister tous les clients avec le cas échéant les désignations, les dates et les quantités des produits qu’ils ont achetés.

SELECT *

FROM client C LEFT JOIN vente V ON C.IdCli = V.IdCli

2. Requêtes quantifiées

2.1. Donner les noms des clients ayant acheté au moins un produit de marque IBM.

SELECT DISTINCT C.Nom

FROM client C , produit P , vente V WHERE V.IdCli = C.IdCli

AND V.IdPro = P.IdPro AND P.Marque = 'IBM'

2.2. Donner les noms des clients n’ayant acheté aucun produit de marque IBM.

SELECT C.Nom FROM client C WHERE NOT EXISTS

(3)

3

(

SELECT *

FROM vente V , produit P WHERE V.IdCli = C.IdCli AND V.IdPro = P.IdPro AND P.Marque = 'IBM' )

2.3. Donner les noms des clients ayant acheté tous les produits de marque IBM.

SELECT C.Nom FROM client C WHERE NOT EXISTS (

SELECT P.IdPro FROM produit P

WHERE P.Marque = 'IBM' AND NOT EXISTS (

SELECT * FROM vente V

WHERE V.IdPro = P.IdPro AND V.IdCli = C.IdCli )

)

Références

Documents relatifs

Sachant que la civilité d’un pilote ne peut avoir comme valeur que « Mr », « Mlle » ou « Mme » et que la valeur par défaut est « Mr », faire les modifications nécessaires..

Liste de tous les pays avec le nombre de clients par pays (nom du pays, nombre de clients) Cette liste sera triée par nombre de clients par pays décroissant.

Avec Likes(drinker, beer) et Frequents(drinker, bar), trouver les beers que Likes au moins un des clients du Joe’s Bar?.

• Toutes les tables intervenant dans la requête doivent être liées entre elles. • Il ne doit pas y avoir de tables n’ayant rien à voir avec

Fonctions de groupe et regroupement de lignes Op´ erateurs de l’alg` ebre relationnelle Fonctions pour requˆ etes SQL et sous-requˆ etes Vues. SQL comme Langage

Une fois cette distinction de la propriété Value faite, il sera naturellement possible de travailler sur les données avec des requêtes SQL.. Ainsi, la requête retournant la liste

 Enregistre le driver (objet driver) pour un type de SGBD particulier.  Le driver est dépendant du

Dans le langage SQL il est possible d’utiliser des alias pour renommer temporairement une colonne ou une table dans une requête. Cette astuce est particulièrement utile pour