Previous Up Next
Université Lille 3-Charles de GaulleUFR de Mathématiques Sciences Économiques et Sociales

Chapitre 38  Les jointures et les sous-requêtes

Dans la table EMP la colonne nodept contient des valeurs qui se trouvent dans la colonne nodept de la table DEPT et inversement.

Logiquement chaque ligne de EMP correspond à une ligne de DEPT et, chaque ligne DEPT correspond à une ou plusieurs lignes de EMP.

Cette correspondance se fait par l'opérateur égalité (« = ») entre les valeurs des deux colonnes des deux tables : c'est une équi-jointure.

Aprés FROM les deux tables sont citées, et le critère d'équi-jointure sert de restriction. Sans cette restriction c'est un produit cartésien de EMP et de DEPT qui serait obtenu.

Exercice 40   Rechercher le prénom des employés et le numéro de la région de leur département.





Derrière SELECT il peut y avoir nécessité de préfixer la colonne par le nom de la table. En effet si la colonne apparaît dans plusieurs tables il y a ambiguïté.

Pour faciliter l'écriture des requêtes, les tables citées derrière FROM peuvent être renommées temporairement, et l'alias peut être utilisé pour préfixer les colonnes.

Exercice 41   Rechercher le numéro du département, le nom du département, le nom des employés classés par numéro de département (renommer les tables utilisées).





La possibilité de renommer temporairement une table dans une requête permet de faire la jointure d'une table sur elle-même, c'est à dire l'auto-jointure.

Exercice 42   Rechercher le nom et le salaire des employés qui gagnent plus que leur patron, et le nom et le salaire de leur patron.





Exercice 43   Rechercher le nom et le salaire des employés qui gagnent plus que Amartakaldire, le nom et le salaire de Amartakaldire.





Si le critére de jointure est omis, le résultat est un produit cartésien inutilisable le plus souvent.

Exercice 44   Rechercher le nom de l'employé Amartakaldire et le nom de son département, ne pas utiliser de critère de jointure (volontairement).





Le résultat d'une requête peut servir dans une clause de restriction d'une autre requête, on parlera alors de sous-requête imbriquée.

La recherche suivante peut se faire de deux manières.

Exercice 45   Rechercher le nom et le titre des employés qui ont le même titre que Amartakaldire.





Dans ce qui précède, la sous-requête retourne une seule valeur, l'opérateur égalité peut être utilisé. Si ce n'est pas le cas il faut utiliser les clauses ANY ou ALL.

Exercice 46   Rechercher le nom, le salaire et le numéro de département des employés qui gagnent plus qu'un seul employé du département 31, classés par numéro de département et salaire.





Exercice 47   Rechercher le nom, le salaire et le numéro de département des employés qui gagnent plus que tous les employés du service 31, classés par numéro de département et salaire.





En fait «IN» est équivalent à «= ANY» et «NOT IN» est équivalent à «!= ALL».

Exercice 48   Rechercher le nom et le titre des employés du service 31 qui ont un titre que l'on trouve dans le service 32.





Exercice 49   Rechercher le nom et le titre des employés du service 31 qui ont un titre l'on ne trouve pas dans le service 32.





Exercice 50   Rechercher le nom, le titre et le salaire des employés qui ont le même titre et le même salaire que Fairant.





Renommer une table et utiliser une sous-requête permet de synchroniser une sous-requête avec la requête principale.

Exercice 51   Rechercher le numéro de département, le nom et le salaire des employés qui gagnent plus que la moyenne de leur département, classés par département.





L'opérateur EXISTS permet de retourner des lignes si la sous-requête en retourne.

Exercice 52   Rechercher le numéro d'employé, le nom, le prénom des employés pour lesquel il existe au moins un Representant dans leur département.





Exercice 53   Rechercher le numéro de département, le nom du département dans lesquels il n'y a personne et montrer que le département ne contient pas d'employé.





Dans la table DEPT il y a des lignes avec un numéro de département qui ne correspondent à aucune ligne de EMP.

Cette ligne est à l'extérieur de la jointure entre les deux tables.

Si on souhaite, malgré tout, obtenir dans le résultat de la jointure ces lignes extra on utilise un LEFT JOIN.

Exercice 54   Rechercher le numéro de département, le nom du département, le nom des employés en tenant compte des numéro de département dans lesquels il y a personne classé par numéro de département.
D.Gonzalez (gonzalez@univ-lille3.fr) en date du th , 

Previous Up Next