• Aucun résultat trouvé

Bases de Données – FICHE 06 L’ordre SQL SELECT Requêtes imbriquées

N/A
N/A
Protected

Academic year: 2022

Partager "Bases de Données – FICHE 06 L’ordre SQL SELECT Requêtes imbriquées"

Copied!
2
0
0

Texte intégral

(1)

Bases de Données – FICHE 06 L’ordre SQL SELECT Requêtes imbriquées

[Texte] Page 1

Opérations ensemblistes

Intersection :

Exemple : lister les artistes qui ont produit des œuvres

C’est l’intersection de 2 ensembles : celui de tous les artistes et celui des artistes qui ont produit des œuvres Comment y répondre :

• lister les artistes dont le numéro (clef primaire) se trouve dans la liste des numéros d’artistes qui ont produit des œuvres

Soit en SQL :

• Lister les artistes : SELECT * FROM artiste

• Lister les numéros des artistes qui ont produit une œuvre : SELECT idArtiste FROM œuvre La réponse complète :

SELECT *

FROM artiste

WHERE idArtiste IN (

SELECT DISTINCT idArtiste FROM oeuvre ) ;

Différence :

Exemple : lister les artistes qui n’ont pas produit d’œuvres

C’est la différence de 2 ensembles : celui de tous les artistes et celui des artistes qui ont produit des œuvres Comment y répondre :

• lister les artistes dont le numéro (clef primaire) NE se trouve PAS dans la liste des numéros d’artistes qui ont produit des œuvres

Soit en SQL :

• Lister les artistes : SELECT * FROM artiste

• Lister les numéros des artistes qui ont produit une œuvre : SELECT idArtiste FROM œuvre La réponse complète :

SELECT *

FROM artiste

WHERE idArtiste NOT IN (

SELECT DISTINCT idArtiste FROM oeuvre ) ;

(2)

Bases de Données – FICHE 06 L’ordre SQL SELECT Requêtes imbriquées

[Texte] Page 2

Une requête imbriquée

Une requête imbriquée (ou sous-requête ou requête interne) est une requête SQL dont le résultat va être utilisé dans une requête principale.

Requête imbriquée indépendante

Le requête imbriquée est dite « indépendante » lorsqu’elle peut être lancée seule, qu’elle ne nécessite pas d’informations de la requête principale.

Exemple : valeur moyenne des œuvres (moyenne des valeurs des œuvres) SELECT AVG(valeurOeuvre) FROM œuvre

Utilisation : lister les œuvres dont la valeur est supérieure à la moyenne SELECT * FROM œuvre

WHERE valeurOeuvre > (SELECT AVG(valeur) FROM œuvre) ;

Requête imbriquée dépendante ou corrélée

Le requête imbriquée est dite « dépendante » (ou « corrélée », en relation avec) lorsqu’elle NE peut PAS être lancée seule, qu’elle nécessite des informations de la requête principale.

Exemple : valeur moyenne des œuvres de chaque artiste

SELECT AVG(valeurOeuvre) FROM œuvre WHERE idArtiste = ? ( ? celui d’une requête principale)

Utilisation : lister les œuvres dont la valeur est supérieure à la moyenne des valeurs des œuvres de l’artiste SELECT * FROM œuvre A

WHERE valeurOeuvre > (SELECT AVG(valeur) FROM œuvre B WHERE A.idArtiste = B.idArtiste) ;

Opérateurs et requêtes imbriquées

Requête imbriquée retournant une valeur unique (1 colonne, 1 ligne)

Utilisation des opérateurs de comparaisons classiques : = , <> , <, <=, >, >=

Utilisation de l’opérateur SQL BETWEEN : SELECT * FROM œuvre

WHERE valeurOeuvre BETWEEN (SELECT AVG(valeur) FROM œuvre) * 0.80 AND (SELECT AVG(valeur) FROM œuvre) * 1.20;

Requête imbriquée retournant une liste de valeurs uniques (1 colonne, n lignes)

Utilisation de l’opérateur SQL IN et opérateurs de comparaison classiques avec ALL (tous) ou ANY (n'importe lequel mais au moins 1)

Requête imbriquée retournant résultat indéterminé (1 à n colonnes, 0 à n lignes)

Utilisation de l’opérateur EXISTS (si le résultat de la sous-requête renvoie un résultat ou pas)

Références

Documents relatifs

L’évaluation de la requête imbriquée est d’abord effectuée une fois pour toutes et va servir (comme valeur unique, ou liste de valeurs) à la requête appelante.. SELECT

La requête imbriquée corrélée va dépendre, cette fois, de valeurs de colonnes de la requête appelante, elle est liée à la requête appelante, elle en est dépendante, corrélée

Les requêtes utilisant l’ordre SQL SELECT ont permis la construction de réponses sous forme de lignes d’un certain nombre de colonnes issues d’une ou plusieurs tables.. En

4 bradford jean Requete : lister les numero, nom et prénom de personnel si la ville n’est pas Arras ou Pau SELECT numero,nom, prenom.

La clause WHERE de l’ordre SELECT définit le critère de choix des lignes à conserver dans le résultat final : c’est l’équivalent de l’opération

Requete1 : lister le nombre de lignes dans la table des personnels par ville pour le salaire supérieur ou égal à 1300 SELECT ville, COUNT(*).

Requete1 : lister le nombre de lignes dans la table des personnels par ville SELECT ville, COUNT(*). FROM personnel GROUP

2 Le penseur 1880 1500.00 2 Rodin Auguste 1840 FRANCE. Les bourgeois