Requêtes imbriquées
TD : Requêtes imbriquées. Recherche parmi 298 000+ dissertationsPar dissertation • 23 Septembre 2013 • TD • 365 Mots (2 Pages) • 565 Vues
I/ Requêtes imbriquées
Rédigez la requête SQL permettant de connaître le prénom et le nom des parents ayant des enfants
SELECT PrenAdh, nomAdh
FROM ADHERENT
WHERE N°Adh in (select NumAdhParent from ADHERENT)
II/ Jointures externes
1) quelles sont les tables concernées par la requête ?
EMPRUNT et LIVRES
2) Une jointure simple (appelé aussi équijointure) permet elle de répondre à la requête ?
En SQL la syntaxe est la suivante :
SELECT DISTINCT TitreLivre, N°Adh
FROM LIVRES LEFT JOIN EMPRUNT ON LIVRES.N°Livre = EMPRUNT.N°Livre;
Exemple 2 : jointure externe droite :
On veut afficher le titre des livres empruntés
SELECT DISTINCT TitreLivre
FROM LIVRES RIGHT JOIN EMPRUNT ON LIVRES.N°Livre = EMPRUNT.N°Livre;
Remarque : comme les numéros de livre figurant dans la table emprunt sont inclus dans la table livre, une équijointure aurait produit exactement le même résultat.
SELECT DISTINCT TitreLivre
FROM LIVRES
WHERE LIVRES.N°Livre = EMPRUNT.N°Livre;
III/ Les opérations ensemblistes
A/ Le produit cartésien
Exemple (à partir de la base GESNOTES.MDB)
SELECT NumCandidat, NomCandidat, Codeépreuve, Désignépreuve
FROM CANDIDAT, EPREUVE;
B/ L’union
Exemple :
On souhaite avoir la liste des candidats (numcandidat, nom candidat et code étab) provenant des établissements scolaires 330 et 350 :
En SQL
SELECT numcandidat, nomcandidat, codeétab
FROM CANDIDAT
Where codeétab=330
UNION
SELECT numcandidat, nomcandidat, codeétab
FROM CANDIDAT
Where codeétab=350;
Proposer une autre solution plus rapide :
SELECT numcandidat, nomcandidat, codeétab
FROM CANDIDAT
Where codeétab=330 OR Codeétab=350
C/ L’intersection
Exemple : On veut obtenir le nom des candidats ayant eu moins de 10 à l’épreuve 3 et à l’épreuve 6
En
...