© Your Copyright
L’objectif de ces exercices est de savoir formuler des opérations ensemblistes (\(\cup,\cap,\setminus\)) « Au tournoi des six nations ».
On fait une union (\(\cup\)) entre la requête permettant de récupérer le nom du coach
du XV de France dans l’ensemble des equipes
et celle pour rechercher les joueurs
de l’équipe du XV de France dans l’ensemble des joueurs
.
Pour obtenir d’abord le nom du coach on pourra faire un UNION ALL
qui concatène
le résultat des deux requêtes.
Ecriture en algèbre relationnelle :
- \(R_1 = \sigma_{[id\_equipe='FRA']}(equipes)\)
- \(P_1 = \Pi_{(coach)}(R_1)\)
- \(R_2 = \sigma_{[id\_equipe='FRA']}(joueur)\)
- \(P_2 = \Pi_{(nom)}(R_2)\)
- \(Q_1 = \cup(P_1,P_2)\)
Ecrire une requête SQL répondant à la question :
- \(Q_1\) : « récupérer les joueurs qui ont été selectionnés dans le XV de France pendant le tournoi des 6 nations ».
On fait une intersection (\(\cap\)) entre la requête permettant de récupérer
le nom des joueurs du XV de France dans joueurs
et celle permettant de récupérer
le nom des joueurs qui ont été sélectionnés (jointure naturelle entre les
tables joueurs,selections
).
Ecriture en algèbre relationnelle :
- \(R_1 = \sigma_{[id\_equipe='FRA']}(joueurs)\)
- \(P_1 = \Pi_{(nom)}(R_1)\)
- \(NJ_1 = \Join_{[]}(joueurs,selections)\)
- \(P_2 = \Pi_{(nom)}(NJ_1)\)
- \(Q_1 = \cap(P_1,P_2)\)
On pourra faire une requête imbriquée avec un IN (\(\in\)).
On pourra aussi faire une requête imbriquée avec un EXISTS (\(\exists\)).
Enfin on pourra faire une jointure naturelle entre les tables joueurs,selections
en récupérant les joueurs sélectionnés dans le XV de France.
Ecrire une requête SQL répondant à la question :
- \(Q_1\) : « récupérer les joueurs qui n’ont pas été selectionnés dans le XV de France pendant le tournoi des 6 nations ».
On fait une différence (\(\setminus\)) entre la requête permettant de récupérer
le nom des joueurs du XV de France dans joueurs
et celle permettant de récupérer
le nom des joueurs qui ont été sélectionnés (jointure naturelle entre les
tables joueurs,selections
).
Ecriture en algèbre relationnelle :
- \(R_1 = \sigma_{[id\_equipe='FRA']}(joueurs)\)
- \(P_1 = \Pi_{(nom)}(R_1)\)
- \(NJ_1 = \Join_{[]}(joueurs,selections)\)
- \(P_2 = \Pi_{(nom)}(NJ_1)\)
- \(Q_1 = \setminus(P_1,P_2)\)
On pourra faire une requête imbriquée avec un NOT IN (\(\notin\)).
On pourra aussi faire une requête imbriquée avec un NOT EXISTS (\(\notexists\)).
On ne pourra pas faire une jointure naturelle entre les tables joueurs,selections
en faisant une restriction sur les joueurs du XV de France et en faisant une diffférence
entre l’identifiant du joueur dans l’ensemble des joueurs et l’identifiant du joueur dans l’ensemble des sélections.