Partager via


Types de jointures

Mise à jour : novembre 2007

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

Autres ressources

Spécification de critères de recherche