Travailler avec SQL Server Outer Joins

dans SQL Server, il est parfois nécessaire de récupérer, en plus des lignes correspondantes, les lignes non appariées de l’une ou des deux tables. Une telle opération est appelée jointure externe.

Les exemples 1 et 2 montrent la différence entre une jointure naturelle et la jointure externe correspondante. (Tous les exemples de cette section utilisent la table employee_enh.,)

EXEMPLE 1

Obtenir les détails complets de tous les employés, y compris l’emplacement de leur département, qui vivent et travaillent dans la même ville:

Le résultat est:

Exemple 1 utilise une jointure naturelle pour afficher l’ensemble de résultats de lignes. Si vous souhaitez connaître tous les autres lieux de vie existants des employés, vous devez utiliser la jointure externe (gauche). C’est ce qu’on appelle une jointure externe gauche car toutes les lignes de la table sur le côté gauche de l’opérateur sont renvoyées, qu’elles aient ou non une ligne correspondante dans la table à droite., En d’autres termes, s’il n’y a pas de lignes correspondantes dans la table du côté droit, la jointure externe retournera toujours une ligne de la table du côté gauche, avec NULL dans chaque colonne de l’autre table (voir Exemple 2). Le moteur de base de données utilise L’opérateur LEFT OUTER JOIN pour spécifier la jointure LEFT outer.

une jointure externe droite est similaire, mais elle renvoie toutes les lignes de la table à droite du symbole. Le moteur de base de données utilise L’opérateur RIGHT OUTER JOIN pour spécifier la jointure externe droite.,

exemple 2

Obtenez tous les détails de tous les employés, y compris l’emplacement de leur département, pour toutes les villes qui sont soit le lieu de vie seulement, soit le lieu de vie et de travail des employés:

le résultat est:

peut voir, quand il n’y a pas de ligne correspondante dans la table sur le côté droit (Département, dans ce cas), la jointure externe gauche renvoie toujours les lignes de la table sur le côté gauche (employee_enh), et les colonnes de l’autre table sont remplies par des valeurs null., L’exemple 3 montre l’utilisation de l’opération de jointure externe droite.

exemple 3

Obtenez tous les détails de tous les départements, ainsi que tous les lieux de vie de leurs employés, pour toutes les villes qui sont soit l’emplacement d’un département ou le lieu de vie et de travail d’un employé:

le résultat est:

en plus des jointures externes gauche et droite, il y a aussi la jointure externe complète, qui est définie comme l’union des jointures externes gauche et droite. En d’autres termes, toutes les lignes des deux tables sont représentées dans le jeu de résultats., S’il n’y a pas de ligne correspondante dans l’une des tables, ses colonnes sont renvoyées avec des valeurs NULL. Cette opération est spécifiée à l’aide de L’opérateur de jointure externe complet.

chaque opération de jointure externe peut être simulée à l’aide de l’opérateur UNION plus la fonction NOT EXISTS. Exemple 4 est équivalent à l’exemple avec la jointure externe gauche (Exemple 2).,

exemple 4

Obtenez tous les détails de tous les employés, y compris l’emplacement de leur département, pour toutes les villes qui sont soit le lieu de vie seulement, soit à la fois le lieu de vie et le lieu de travail des employés:

la première instruction SELECT dans l’union spécifie la jointure naturelle des tables employee_enh et department avec les colonnes join domicile et location. Cette instruction SELECT récupère toutes les villes qui sont en même temps les lieux de vie et de travail de chaque employé., La deuxième instruction SELECT de l’union récupère en outre toutes les lignes de la table employee_enh qui ne correspondent pas à la condition de la jointure naturelle.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *