Joins

30 min Niveau 8

La clause Joins de PostgreSQL est utilisée pour combiner les enregistrements de deux ou plusieurs tables dans une base de données. Un JOIN est un moyen de combiner des champs de deux tables en utilisant des valeurs communes à chacune.

Les types de jointures dans PostgreSQL sont :

  • The CROSS JOIN
  • The INNER JOIN
  • The LEFT OUTER JOIN
  • The RIGHT OUTER JOIN
  • The FULL OUTER JOIN

Avant de poursuivre, considérons deux tables, COMPANY et DEPARTMENT. Nous avons déjà vu les instructions INSERT pour remplir la table SOCIÉTÉ. Supposons donc que la liste des enregistrements disponibles dans la table SOCIÉTÉ :

id | name  | age | address   | salary | join_date
----+-------+-----+-----------+--------+-----------
  1 | Paul  |  32 | California|  20000 | 2001-07-13
  3 | Teddy |  23 | Norway    |  20000 |
  4 | Mark  |  25 | Rich-Mond |  65000 | 2007-12-13
  5 | David |  27 | Texas     |  85000 | 2007-12-13
  2 | Allen |  25 | Texas     |        | 2007-12-13
  8 | Paul  |  24 | Houston   |  20000 | 2005-07-13
  9 | James |  44 | Norway    |   5000 | 2005-07-13
 10 | James |  45 | Texas     |   5000 | 2005-07-13

Une autre table est DEPARTMENT, à la définition suivante :

CREATE TABLE DEPARTMENT(
    ID INT PRIMARY KEY      NOT NULL,
    DEPT           CHAR(50) NOT NULL,
    EMP_ID         INT      NOT NULL
);

Voici la liste des instructions INSERT pour alimenter la table DEPARTMENT :

INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
VALUES (1, 'IT Billing', 1 );

INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
VALUES (2, 'Engineering', 2 );

INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
VALUES (3, 'Finance', 7 );

Finalement, nous avons la liste suivante d'enregistrements disponibles dans la table DEPARTMENT :

id | dept        | emp_id
----+-------------+--------
  1 | IT Billing  |  1
  2 | Engineering |  2
  3 | Finance     |  7

The CROSS JOIN

Un CROSS JOIN fait correspondre chaque ligne de la première table avec chaque ligne de la deuxième table. Si les tableaux d'entrée ont respectivement x ety colonnes, le tableau résultant aura x+y colonnes. Comme les CROSS JOIN peuvent générer des tableaux extrêmement volumineux, il faut veiller à ne les utiliser que lorsque cela est approprié.

Voici la syntaxe d'un CROSS JOIN :

SELECT ... FROM table1 CROSS JOIN table2 ...

En se basant sur les tableaux ci-dessus, nous pouvons écrire un CROSS JOIN comme suit :

testdb=# SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT;

La requête donnée ci-dessus produira le résultat suivant :

emp_id| name  |  dept
------|-------|--------------
    1 | Paul  | IT Billing
    1 | Teddy | IT Billing
    1 | Mark  | IT Billing
    1 | David | IT Billing
    1 | Allen | IT Billing
    1 | Paul  | IT Billing
    1 | James | IT Billing
    1 | James | IT Billing
    2 | Paul  | Engineering
    2 | Teddy | Engineering
    2 | Mark  | Engineering
    2 | David | Engineering
    2 | Allen | Engineering
    2 | Paul  | Engineering
    2 | James | Engineering
    2 | James | Engineering
    7 | Paul  | Finance
    7 | Teddy | Finance
    7 | Mark  | Finance
    7 | David | Finance
    7 | Allen | Finance
    7 | Paul  | Finance
    7 | James | Finance
    7 | James | Finance

The INNER JOIN

logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus