Organisation et structure des données
Bloc 1
Haute-École de Namur-Liège-Luxembourg
Série 5
SQL
Requêtes avancées
Objectif
• Interroger une base de données relationnelle via des requêtes SQL
avancées
Soit le schéma entité-association suivant :
1
Soit le schéma relationnel correspondant :
Assurez-vous que la base de données serie4 est disponible (tables créées et
remplies). Si ce n’est pas le cas, exécutez les scripts
script_creation_tables_serie4.sql et script_remplissage_tables_serie4.sql.
2
Exercice 1 : Jointures
Dans les requêtes de jointure, privilégiiez l’écriture de type INNER JOIN.
1. Sélectionnez le nom et le prix unitaire de chaque produit de plus de 200
euros ainsi que (le nom de) la société de son fournisseur. (12 lignes).
2. Sélectionnez le nom et l’adresse complète (numéro, nom de rue, code
postal, ville et pays) des clients dont le code commence par la lettre B.
(7 lignes).
3. Pour chaque commande dont le port est inférieur à 1 euro, sélectionnez le
numéro et la date de commande, le nom et le téléphone du client qui a
passé la commande ainsi que le prénom et le nom de l’employé qui s’est
chargé de la commande. (19 lignes)
4. Pour chaque ligne de commande dont la quantité dépasse les 80 articles,
sélectionnez la quantité commandée, le nom du produit commandé ainsi
que le nom de la catégorie du produit. Rebaptisez à bon escient les colonnes
à l’affichage. Triez le tout par nom de catégorie, et, en cas de catégorie
identique, par ordre alphabétique inverse sur le nom du produit. (23 lignes)
5. Pour chaque produit dont le prix unitaire est compris entre 160 et 200 euros,
sélectionnez le nom du produit, le nom de la catégorie, le nom de la société
du fournisseur ainsi que l’adresse complète de ce dernier (y compris le code
postal, la ville et le pays). (10 lignes)
3
Exercice 2 : Sous-requêtes
1. a. Sélectionnez le code postal et la ville des localités qui se trouvent dans le
même pays que la localité numéro 2. (13 lignes)
b. Sélectionnez le code postal, la ville et le pays des localités qui se trouvent
dans le même pays que Berlin, Bruxelles, Graz ou Helsinki. (21 lignes)
2. Sélectionnez le nom des produits qui ont soit la même catégorie que le
produit dont la référence est 10, soit le même fournisseur que le produit
dont la référence est 15. (14 lignes)
3. a. Sélectionnez toutes les informations sur les produits qui sont moins chers
qu’au moins un produit de la catégorie 5. (61 lignes)
b. Sélectionnez toutes les informations sur les produits qui sont moins chers
que tous les produits de la catégorie 5. (3 lignes)
4
Exercice 3 : Groupements
1. Sélectionnez le nombre de lignes de commande enregistrées dans la base de
données (rebaptisez cette colonne à l’affichage "Nb lignes de commande")
ainsi que le prix unitaire moyen parmi toutes les lignes de commande
(rebaptisez cette colonne à l’affichage "Prix moyen") et la plus grande
quantité commandée parmi toutes les lignes de commande (rebaptisez cette
colonne à l’affichage "La plus grande quantité"). (1 ligne)
2. a. Sélectionnez, pour chaque commande, le numéro de la commande ainsi
que la quantité totale d’articles achetés (somme des quantités des lignes de
la commande). Ne gardez que les commandes qui comptent exactement 5
lignes de commande. Rebaptisez si nécessaire les colonnes à l’affichage. (30
lignes)
b. Défi : ajoutez à la requête précédente le coût total (hors remise) de
chaque commande (= la somme des coûts de chaque ligne de commande,
sachant que le coût d’une ligne de commande hors remise = prix unitaire X
quantité). (30 lignes)
3. Groupez les produits par catégorie, puis au sein des produits d’une même
catégorie, par fournisseur. Affichez pour chacun de ces sous-groupes, le
code de la catégorie, le numéro du fournisseur, le nombre de produits, le
prix unitaire moyen ainsi que le prix le plus bas et le prix le plus élevé.
Renommez à bon escient les colonnes à l’affichage. (49 lignes)
Exercice 4
Testez d’autres sous-requêtes, requêtes de groupement ou de jointures de votre
choix.