Types de jointures
Lorsque que vous réalisez une jointure de tables, le type de cette jointure influe sur les lignes affichées dans l'ensemble des résultats.Voici les différents types de jointures pouvant être créés :
Jointure interne Jointure n'affichant que les lignes ayant une correspondance dans les deux tables jointes.(Type de jointure par défaut du Concepteur de requêtes et de vues.) Par exemple, il serait possible de joindre les tables titles et publishers pour obtenir un ensemble de résultats montrant, pour chaque titre, le nom de son éditeur.Dans le cas d'une jointure interne, les titres non accompagnés d'informations sur l'éditeur et les éditeurs non accompagnés de titres ne seront pas inclus dans l'ensemble des résultats.L'instruction SQL obtenue avec ce type de jointure peut se présenter de la manière suivante :
SELECT title, pub_name FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id
[!REMARQUE]
Lorsque vous créez une jointure interne, les colonnes contenant la valeur NULL ne correspondent à aucune valeur. Par conséquent, elles sont exclues de l'ensemble des résultats.Les valeurs Null ne correspondent pas à d'autres valeurs Null.
Jointure externe Jointure incluant des lignes même si ces dernières ne correspondent pas à des lignes de la table jointe.Pour spécifier les lignes à inclure, vous disposez de trois types de jointures externes :
Jointure externe gauche La jointure inclut toutes les lignes de la première table citée (table la plus à gauche dans la clause JOIN).Les lignes sans correspondance dans la table de droite n'apparaissent pas.Par exemple, l'instruction SQL suivante illustre une jointure externe gauche entre les tables titles et publishers, demandant à inclure tous les titres, même s'ils ne sont pas accompagnés d'informations sur leur éditeur :
SELECT titles.title_id, titles.title, publishers.pub_name FROM titles LEFT OUTER JOIN publishers ON titles.pub_id = publishers.pub_id
Jointure externe droite La jointure inclut toutes les lignes de la deuxième table citée (table la plus à droite dans la clause JOIN).Les lignes sans correspondance dans la table de gauche n'apparaissent pas.Par exemple, une jointure externe droite entre les tables titles et publishers inclurait tous les éditeurs, même s'ils n'ont pas de titre dans la table titles.L'instruction SQL obtenue peut se présenter de la manière suivante :
SELECT titles.title_id, titles.title, publishers.pub_name FROM titles RIGHT OUTER JOIN publishers ON titles.pub_id = publishers.pub_id
Jointure externe entière Inclut toutes les lignes de toutes les tables jointes, qu'elles aient ou non une correspondance entre elles.Par exemple, une jointure externe entière entre les tables titles et publishers inclurait tous les titres et tous les éditeurs, même s'ils n'ont aucune correspondance dans l'autre table.
SELECT titles.title_id, titles.title, publishers.pub_name FROM titles FULL OUTER JOIN publishers ON titles.pub_id = publishers.pub_id
[!REMARQUE]
Certaines bases de données, et notamment Oracle, ne prennent pas en charge les jointures externes entières.
Jointure croisée Jointure dont l'ensemble des résultats inclut une ligne par paire de lignes constituée par correspondance entre les deux tables.Par exemple, une jointure croisée entre les tables authors et publishers donnerait un ensemble de résultats où chaque combinaison possible entre auteur et éditeur produirait une ligne.L'instruction SQL obtenue peut se présenter de la manière suivante :
SELECT * FROM authors CROSS JOIN publishers
Voir aussi
Concepts
Utilisation de données du volet Résultats