logo

SQL | Sous-requêtes dans la clause From

Les sous-requêtes SQL sont des fonctionnalités précieuses qui nous permettent d'intégrer une requête dans une autre, ajoutant plus d'importance à la récupération et à la manipulation des données de manière complexe. Il est utilisé pour configurer des tables temporaires ou des résultats intermédiaires qui seront ensuite utilisés par la requête externe.

Sous-requête dans la clause FROM

La clause FROM peut être utilisée pour spécifier une expression de sous-requête en SQL. La relation produite par la sous-requête est ensuite utilisée comme nouvelle relation sur laquelle la requête externe est appliquée pour d'autres opérations. Sous-requêtes dans leFROMLa clause est utilisée lorsque nous devons créer un ensemble de données temporaire qui n’existe dans aucune table physique. Cela peut être extrêmement utile lorsque vous travaillez avec des ensembles de données complexes.

inversion de chaîne en c

Les variables de corrélation des tables référencées dans la clause FROM de la requête externe ne peuvent pas être utilisées directement dans les sous-requêtes de la clause FROM. Vous trouverez ci-dessous deux syntaxes d'utilisation de Subquery dans la clause FROM utilisées dans différents scénarios.



1. Sous-requête simple dans leFROMClause:

SELECT colonne1 colonne2

FROM (SELECT colonne_x AS C1 colonne_y FROM table WHERE condition) AS subquery_table

OÙ condition_extérieure ;

2. Sous-requête dans leFROMClause avecJOIN:

SELECT colonne1 colonne2

FROM (SELECT colonne_x AS C1 colonne_y FROM table WHERE PREDICATE_X) AS table2

troisième forme normale

REJOINDRE table1 SUR table2.some_column = table1.some_column

O PRÉDICAT ;

Paramètres :

  • Sous-requête : La requête interne entre parenthèses. Il récupère des données qui feront office de table temporaire.
  • Alias : La sous-requête doit recevoir un alias (subquery_table) à référencer dans la requête externe.
  • Requête externe : La requête externe peut ensuite fonctionner avec cette table temporaire créée par la sous-requête en appliquant des filtres ou en effectuant d'autres opérations.

Comment fonctionnent les sous-requêtes de la clause FROM

  • Évaluation de sous-requête : La sous-requête de la clause from est évaluée en premier, puis les résultats de l'évaluation sont stockés dans une nouvelle relation temporaire. 
  • Requête externe : Une fois que la sous-requête s'exécute et renvoie un ensemble de données, la requête externe est évaluée en sélectionnant uniquement les tuples de la relation temporaire qui satisfont le prédicat dans la clause Where de la requête externe.

Exemple d'utilisation d'une sous-requête dans la clause FROM

Discutons de quelques exemples concrets pour comprendre comment les sous-requêtes de la clause FROM fonctionnent dans la pratique. Ici nous avons deux tableaux Instructeur tableau qui contient des informations sur les instructeurs, y compris leur salaire et leur département. L'autre est Département tableau qui contient des informations sur différents départements, y compris le budget du département.

Instructeur Tableau 

ID instructeurNomDépartementSalaire
44547ForgeronL'informatique95000
44541FactureÉlectrique55000
47778SeulSciences humaines44000
48147ÉrikMécanique80000
411547BaumeInformatique65000
48898IénaCivil50000

Département Tableau

Nom du départementBudget
L'informatique100000
Électrique80000
Sciences humaines50000
Mécanique40000
Informatique90000
Civil60000

Exemple 1 : Retrouvez tous les professeurs dont le salaire est supérieur au budget moyen de tous les départements. 

Dans cet exemple, nous utiliserons une sous-requête dans la clause FROM pour calculer le budget moyen de tous les départements, puis effectuerons la comparaison avec les salaires des instructeurs.

arbre binaire vs bst

Requête:   

MySQL change le type de colonne
SELECT I.InstructorID I.Name I.Department I.Salary  
FROM (SELECT AVG(Budget) AS averageBudget FROM Department) AS BUDGET
Instructor AS I
WHERE I.Salary > BUDGET.averageBudget;

Sortir  

ID instructeurNomDépartementSalaire
44547ForgeronL'informatique95000
48147ÉrikMécanique80000

Explication:

  • Le budget moyen de tous les départements de la relation départementale est de 70 000.
  • Erik et Smith sont les seuls instructeurs dans la relation instructeur dont le salaire est supérieur à 70 000 et sont donc présents dans la relation sortie. 

Pourquoi utiliser des sous-requêtes dans la clause FROM ?

L'utilisation de sous-requêtes dans la clause FROM présente divers avantages, comme indiqué ci-dessous :

  • Simplification : Ils peuvent simplifier les requêtes complexes en les décomposant en parties plus petites et plus faciles à gérer. Vous n'avez pas besoin de créer explicitement des tables temporaires dans votre base de données.
  • Lisibilité améliorée  : L'utilisation de sous-requêtes dans la clause FROM rend la requête plus lisible car elle divise > Flexibilité  : les sous-requêtes vous permettent d'effectuer des opérations qui seraient peu pratiques comme des agrégations ou un filtrage par par sur d'autres ensembles de données sans avoir la nécessité de créer des tables intermédiaires.

Conclusion

Les sous-requêtes dans la clause FROM nous permettent de définir  jeux de résultats temporaires qui peuvent être utilisés par des requêtes externes. Ils facilitent les opérations SQL complexes, améliorent la lisibilité des requêtes et offrent une flexibilité dans le filtrage et l'agrégation des données. Savoir comment utiliser les sous-requêtes dans la clause FROM est une compétence de base pour tout praticien SQL, en particulier lorsqu'il s'agit de bases de données complexes ou lorsque vous devez effectuer une analyse de données complexe.

Créer un quiz