Opérations de set
Les opérations de Set
On considère le résultat de chaque phrase select
une nouvelle table (relation). On peut donc fusionner plusieurs relations en utilisant les opérateurs suivants :
Union : fusionner deux sets, en gardant tous les tuples uniques provenant des 2 sets
Intersect : fusionner deux sets, en gardant les tuples qui se trouvent dans les 2 sets
Except : fusionner deux sets, en gardant les tuples du premier set qui ne se trouvent pas dans le 2ème set
Les opérateurs de set sont des outils qui permettent :
De créer des requêtes plus lisibles (plusieurs requêtes simples, fusionnées)
D'optimiser nos requêtes : éviter des produits cartésiens énormes, et fusionner le résultat
Union
Je veux savoir les villes de France où l'on a facturé plus que 1000 € pour l'année 2019 ou 2022.
Une façon de traiter cette demande serait de construire deux requêtes simples, et puis retourner l'union entre les 2 sets des résultats.
Par exemple :
Et :
Je peux fusionner les 2 tableaux générés avec l'opérateur union
, qui traitera les deux tableaux comme des sets. C'est-à-dire, il n'y a pas de doublon !
Par défaut, union
enlève les doublons dans le résultat. En revanche, on peut aussi utiliser union all
afin de garder les doublons.
Intersection
Je veux modifier ma requête. Je veux connaître les villes dans lesquelles on a facturé plus que 1000 € pour l'année 2019 et l'année 2022.
Pour cela, pas besoin de créer une série de conditions complètes ! On a juste à utiliser l'opérateur intersect
, qui va garder uniquement les tuples qui se trouvent dans les 2 sets.
Il y a donc 43 villes où on a facturé plus que 1000 € sur le deux années.
Except
Je veux savoir quelles villes ont facturé plus que 1000 € en 2019, mais pas en 2022. Il faut donc enlever du premier set toutes les villes qui se trouvent aussi dans le deuxième set.
Exercice
Les exercices suivants sont basés sur la base de données SAKILA, une base de données de test fourni par MySQL.
Question 1
Un client vient chercher un film avec l’acteur « Groucho Dunst ». Elle aime les films d’action.
Utilisez l’opérateur union
afin de présenter une liste de films qui répond à, au moins, un des deux critères.
Question 2
Un client vient chercher un film avec l’acteur « Groucho Dunst ». Elle aime les films d’action.
Utilisez l’opérateur intersect
afin d’afficher uniquement la liste de films d’action avec « Groucho Dunst »
Question 3
Vous mettez en place une promo pour les films non-adulte. En utilisant l’opérateur except
, trouvez tous les films qui coûtent moins que 4€ à louer, en excluant ceux du rating « R ». Adaptez votre requête afin d’afficher les prix avec 10% de remise.
Dernière mise à jour