Les jointures PostgreSQL

Résumé : dans ce tutoriel, vous apprendrez les différents types de jointures PostgreSQL, notamment la jointure interne, la jointure gauche, la jointure droite et la jointure externe complète.

La jointure PostgreSQL est utilisée pour combiner les colonnes d’une (auto-jointure) ou de plusieurs tables en fonction des valeurs des colonnes communes entre les tables liées. Les colonnes communes sont généralement les colonnes de clé primaire de la première table et les colonnes de clé étrangère de la deuxième table.

PostgreSQL prend en charge la jointure interne, la jointure gauche, la jointure droite, la jointure externe complète, la jointure croisée, la jointure naturelle et un type spécial de jointure appelé auto-jointure.

Configuration de tables d’échantillons

Supposons que vous ayez deux tables appelées basket_a et basket_b qui stockent des fruits :

Les tables ont des fruits communs tels que apple et orange.

L’instruction suivante renvoie les données de la table basket_a :

Et l’instruction suivante retourne les données de la table basket_b :

PostgreSQL inner join

L’instruction suivante joint la première table (basket_a) avec la deuxième table (basket_b) en faisant correspondre les valeurs des colonnes fruit_a et fruit_b :

La jointure interne examine chaque ligne du premier tableau (basket_a). Elle compare la valeur de la colonne fruit_a à la valeur de la colonne fruit_b de chaque ligne du second tableau (basket_b). Si ces valeurs sont égales, la jointure interne crée une nouvelle ligne qui contient des colonnes des deux tables et ajoute cette nouvelle ligne le jeu de résultats.

Le diagramme de Venn suivant illustre la jointure interne :

PostgreSQL left join

L’instruction suivante . utilise la clause de jointure gauche pour joindre la table basket_a à la table basket_b. Dans le contexte de la jointure gauche, la première table est appelée la table de gauche et la deuxième table est appelée la table de droite.

La jointure gauche commence à sélectionner les données de la table de gauche. Elle compare les valeurs de la colonne fruit_a avec les valeurs de la colonne fruit_b de la table panier_b.

Si ces valeurs sont égales, la jointure gauche crée une nouvelle ligne qui contient les colonnes des deux tables et ajoute cette nouvelle ligne au jeu de résultats. (voir la ligne #1 et #2 dans le jeu de résultats).

Dans le cas où les valeurs ne sont pas égales, la jointure gauche crée également une nouvelle ligne qui contient des colonnes des deux tables et l’ajoute au jeu de résultats. Cependant, elle remplit les colonnes de la table de droite (basket_b) avec null. (voir la ligne #3 et #4 dans l’ensemble de résultats).

Le diagramme de Venn suivant illustre la jointure gauche :

Pour sélectionner des lignes de la table de gauche qui n’ont pas de lignes correspondantes dans la table de droite, vous utilisez la jointure gauche avec une WHERE clause. Par exemple :

La sortie est :

Notez que la LEFT JOIN est la même que la LEFT OUTER JOIN, vous pouvez donc les utiliser indifféremment.

Le diagramme de Venn suivant illustre la jointure gauche qui renvoie des lignes de la table de gauche qui n’ont pas de lignes correspondantes de la table de droite:

PostgreSQL right join

La jointure droite est une version inversée de la jointure gauche. La jointure droite commence à sélectionner les données de la table de droite. Elle compare chaque valeur de la colonne fruit_b de chaque ligne de la table de droite avec chaque valeur de la colonne fruit_a de chaque ligne de la table fruit_a.

Si ces valeurs sont égales, la jointure droite crée une nouvelle ligne qui contient des colonnes des deux tables.

Dans le cas où ces valeurs ne sont pas égales, la jointure droite crée également une nouvelle ligne qui contient des colonnes des deux tables. Cependant, elle remplit les colonnes de la table de gauche avec NULL.

L’instruction suivante utilise la jointure droite pour joindre la table basket_a à la table basket_b:

Voici la sortie :

Le diagramme de Venn suivant illustre la bonne jointure :

De même, vous pouvez obtenir des lignes de la table de droite qui n’ont pas de lignes correspondantes dans la table de gauche en ajoutant une WHERE clause comme suit :

La RIGHT JOIN et la RIGHT OUTER JOIN sont identiques donc vous pouvez les utiliser de manière interchangeable.

Le diagramme de Venn suivant illustre la jointure droite qui renvoie les lignes de la table de droite qui n’ont pas de lignes correspondantes dans la table de gauche :

PostgreSQL full outer join

La jointure externe complète ou full join renvoie un jeu de résultats qui contient toutes les lignes des tables de gauche et de droite, avec les lignes correspondantes des deux côtés si elles sont disponibles. Dans le cas où il n’y a pas de correspondance, les colonnes de la table seront remplies de NULL.

Sortie:

Le diagramme de Venn suivant illustre la jointure externe complète :

Pour retourner les lignes d’une table qui n’ont pas de lignes correspondantes dans l’autre, vous utilisez la jointure complète avec une WHERE clause comme ceci:

Voici le résultat :

Le diagramme de Venn suivant illustre la jointure externe complète qui renvoie les lignes d’une table qui n’ont pas les lignes correspondantes dans l’autre table :

L’image suivante montre toutes les jointures PostgreSQL dont nous avons parlé jusqu’à présent avec la syntaxe détaillée :

Dans ce tutoriel, vous avez appris à utiliser différents types de jointures PostgreSQL pour combiner les données de plusieurs tables liées.

  • Ce tutoriel vous a-t-il été utile ?
  • OuiNon

.

Laisser un commentaire

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