La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours 5: Sous requetes Exploitation des données. 3.2.1. Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus.

Présentations similaires


Présentation au sujet: "Cours 5: Sous requetes Exploitation des données. 3.2.1. Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus."— Transcription de la présentation:

1 Cours 5: Sous requetes Exploitation des données

2 3.2.1. Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus important que celui d’Abel. Pour résoudre ce problème, vous avez besoin de deux requêtes : une pour trouver combien gagne Abel et une deuxième trouver qui gagne plus que ce montant.  Vous pouvez résoudre ce problème en combinant les deux requêtes, c’est-à-dire en plaçant une requête à l’intérieure d’une autre requête.

3 Qui gagne plus qu’Abel ? La requête à l’intérieure (ou la sous-requête) retourne une valeur qui est utilisée par la requête extérieure (ou la requête principale). Utiliser une sous-requête est équivaut à combiner deux requêtes séquentielles en utilisant le résultat de la première comme la valeur de recherche dans la seconde requête.

4 Syntaxe des sous-requêtes  Une sous-requête est une clause SELECT contenue dans une autre clause SELECT. Vous pouvez construire des requêtes plus poussées que les requêtes simples en utilisant les sous-requêtes.  Elles peuvent être très utiles quand vous avez besoin de sélectionner les lignes d’une table avec une condition qui dépend des données de la table elle-même.  Vous pouvez inclure les sous-requêtes dans de nombreuses clauses SQL dont celles qui suivent :  Clause WHERE  Clause HAVING  Clause FROM

5 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); Dans la syntaxe : operator inclut une condition de comparaison tel que >, =, ou IN. Remarque : Les conditions de comparaisons sont réparties en deux catégories :  Les opérateurs single-row (>, =, >=,, <= ).  Les opérateurs multiple-row ( IN, ANY, ALL ).

6 Utiliser une sous-requête  Exemple : La requête intérieure récupère le salaire de l’employé Abel. La requête extérieure prend le résultat de la requête intérieure et l’utilise pour afficher tous les employés qui gagnent plus que ce montant.

7 Guide d’utilisation des sous- requêtes  Une sous-requête doit être délimitée par des parenthèses.  Placez la sous-requête du côté droit de la condition de comparaison pour la meilleure visibilité.  Deux classes de condition de comparaison sont utilisées dans les sous-requêtes : les opérateurs single-row et les opérateurs multiple- row.  Utilisez un opérateur single-row avec les sous-requêtes single-row et les opérateurs multiple-row avec les sous-requêtes multiple-row.  Une clause ORDER BY peut être utilisée et est nécessaire dans la sous-requête pour réaliser des analyses Top-N.

8 Types de sous-requêtes  Une sous-requête multiple-row est une sous-requête qui retourne plus d’une ligne.  Une sous-requête single-row est une sous-requête qui retourne seulement une ligne. Remarque : Il existe également des sous-requêtes multi-colonne qui sont des sous- requêtes qui retournent plus d’une colonne.

9 Sous-requête Single-Row  Une sous-requête single-row est une requête qui retourne une ligne de la requête interne SELECT. Ce type de sous-requête utilise un opérateur single-row. Voici la liste des opérateurs single-row : OpérateurSignification = Égale à > Plus grand que >= Plus grand ou égal à < Plus petit que <= Plus petit ou égal à <> Different de

10 Exemple (Single-Row)

11 Exemple 2 (Single-Row)  Une requête SELECT peut être considérée comme un bloc de requête. Cet exemple affiche les employés qui ont le même identifiant de poste que l’employé 141 et dont le salaire est supérieur à celui de l’employé 143.  Cet exemple est composé de trois blocs de requête : une requête principale et deux sous-requêtes.  Les sous-requêtes sont exécutées en premier, produisant les résultats recherchés, respectivement ST_CLERK et 2600. La requête principale est alors traitée et utilise les valeurs qui sont retournées par les sous- requêtes pour compléter les conditions de recherche.  Chacune des deux requêtes internes retourne une valeur (ST_CLERK et 2600 respectivement), donc chaque sous-requête SQL est appelée sous-requête single-row.

12 Exemple 2 (Single-Row)

13 les fonctions de groupe dans les sous-requêtes  Vous pouvez afficher les données d’une requête principale en utilisant une fonction de groupe dans une sous-requête ne retournant qu’une seule ligne. La sous-requête est entre parenthèse et est placée après la condition de comparaison.  Cet exemple affiche le nom de l’employé, l’identifiant de poste et le salaire pour tous les employés qui ont un salaire égal au salaire minimum. La fonction de groupe MIN retourne une seule valeur ( 2500 ) à la requête principale.

14 La clause HAVING avec les sous-requêtes  Vous pouvez utiliser les sous-requêtes non seulement dans la clause WHERE mais aussi dans la clause HAVING.L’ordre SQL affiche tous les départements qui ont un salaire plus grand que ceux du département 50

15 Exemple (Having single row):  Trouver le job avec le salaire moyen le moins élevé.  Le serveur exécute en premier la sous-requête.  Le serveur retourne les résultats dans la clause HAVING de la requête principale.

16 Les erreurs avec les sous- requêtes  Une erreur commune arrive lorsque plus d’une ligne est retournée pour une sous-requête single- row.  Un autre problème commun arrive avec les sous- requêtes quand aucune ligne n’est retournée par la sous-requête.

17 Sous-requêtes Multiple-Row  Les sous-requêtes qui retournent plus d’une ligne sont appelés les sous-requêtes multiple-row.  Vous devez utiliser un opérateur multiple-row au lieu d’un opérateur single-row avec les sous-requêtes single-row. Les opérateurs multiple-row attendent une ou plusieurs valeurs. Voici la liste des opérateurs Multi-row : : OpérateursSignification IN Égale à n’importe quel membre de la liste ANY Compare la valeur à chaque valeur retournée par la sous-requête ALL Compare la valeur à toutes les valeurs retournées par la sous-requête

18 Exemple 1 Multi-row  Trouvez les employés qui gagnent le même salaire que le salaire minimum de chaque département.  La sous-requête est exécutée en premier. La requête principale est alors traitée et utilise les valeurs qui sont retournés par la sous-requête pour compléter la condition de la recherche

19 Exemple 1 Multi-row En fait, la requête principale apparaît au serveur de la manière suivante :

20 Multi-row (Any)  L’opérateur ANY (et son synonyme l’opérateur SOME ) compare une valeur à chaque valeur retournée par la sous-requête. Ainsi, pour qu’une ligne soit retournée, la condition doit être validée avec une des valeurs retournées par la sous-requête.  L’exemple suivant affiche les employés qui ne sont pas des IT_PROG et dont le salaire est inférieur au salaire de n’importe quel IT_PROG. Le salaire maximal d’un programmeur ( IT_PROG ) est 9 000$.  <ANY signifie plus petit que le maximum.  >ANY signifie plus grand que le minimum  =ANY est équivalent à la clause IN.

21 Exemple Multi-row (Any)

22 Multi-row (ALL)  L’opérateur ALL compare une valeur à toutes les valeurs retournées par la sous-requête. Ainsi, pour qu’une ligne soit retournée, la condition doit être validée avec toutes les valeurs retournées par la sous-requête.  L’exemple suivant affiche les employés qui ne sont pas des IT_PROG et dont le salaire est inférieur aux salaires de tous les IT_PROG. Le salaire minimal d’un programmeur ( IT_PROG ) est 4 200$.  >ALL signifie plus grand que le maximum  <ALL signifie plus petit que le minimum

23 Exemple Multi-row (ALL) 9000, 6000, 4200 SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary < ALL (SELECT salary FROM employees WHERE job_id = 'IT_PROG') AND job_id <> 'IT_PROG';

24 Multi-row (NOT)  L’opérateur NOT peut être utilisé avec les opérateurs IN, ANY, et ALL.  Afficher tous les employés qui n’ont pas de subordonnés :


Télécharger ppt "Cours 5: Sous requetes Exploitation des données. 3.2.1. Présentation  Supposez que vous voulez écrire une requête pour trouver qui a un salaire plus."

Présentations similaires


Annonces Google