Snowpark Migration Accelerator : Jointure

Description

Fusionne les lignes de deux références de table en utilisant les conditions de jointure spécifiées. Pour plus de références, voir Référence linguistique JOIN Databricks SQL.

Une JOIN combine des données provenant de deux sources (telles que des tables ou des vues) en un seul jeu de résultats. Chaque ligne du résultat contient des colonnes provenant des deux sources en fonction d’une condition spécifiée. Pour une explication détaillée des jointures, voir Utilisation des jointures.(Référence linguistique JOIN Snowflake SQL)

Syntaxe

left_table_reference { [ join_type ] JOIN right_table_reference join_criteria |
           NATURAL join_type JOIN right_table_reference |
           CROSS JOIN right_table_reference }

join_type
  { [ INNER ] |
    LEFT [ OUTER ] |
    [ LEFT ] SEMI |
    RIGHT [ OUTER ] |
    FULL [ OUTER ] |
    [ LEFT ] ANTI |
    CROSS }

join_criteria
  { ON boolean_expression |
    USING ( column_name [, ...] ) }
Copy
SELECT ...
FROM <object_ref1> [
                     {
                       INNER
                       | { LEFT | RIGHT | FULL } [ OUTER ]
                     }
                   ]
                   JOIN <object_ref2>
  [ ON <condition> ]
[ ... ]

SELECT *
FROM <object_ref1> [
                     {
                       INNER
                       | { LEFT | RIGHT | FULL } [ OUTER ]
                     }
                   ]
                   JOIN <object_ref2>
  [ USING( <column_list> ) ]
[ ... ]

SELECT ...
FROM <object_ref1> [
                     {
                       | NATURAL [ { LEFT | RIGHT | FULL } [ OUTER ] ]
                       | CROSS
                     }
                   ]
                   JOIN <object_ref2>
[ ... ]
Copy

Modèles d’échantillons de sources

Données de configuration

Databricks

-- Use employee and department tables to demonstrate different type of joins.
CREATE TEMP VIEW employee(id, name, deptno) AS
     VALUES(105, 'Chloe', 5),
           (103, 'Paul', 3),
           (101, 'John', 1),
           (102, 'Lisa', 2),
           (104, 'Evan', 4),
           (106, 'Amy', 6);

CREATE TEMP VIEW department(deptno, deptname) AS
    VALUES(3, 'Engineering'),
          (2, 'Sales'      ),
          (1, 'Marketing'  );
Copy

Snowflake

-- Use employee and department tables to demonstrate different type of joins.
CREATE TEMPORARY TABLE employee(id, name, deptno) AS
SELECT id, name, deptno
  FROM (VALUES (105, 'Chloe', 5),
           (103, 'Paul' , 3),
           (101, 'John' , 1),
           (102, 'Lisa' , 2),
           (104, 'Evan' , 4),
           (106, 'Amy'  , 6)) AS v1 (id, name, deptno);

CREATE TEMP VIEW department(deptno, deptname) AS
SELECT deptno, deptname
  FROM (VALUES(3, 'Engineering'),
          (2, 'Sales'      ),
          (1, 'Marketing'  )) AS v1 (deptno, deptname);
Copy

Code du modèle

Databricks

-- 1. Use employee and department tables to demonstrate inner join.
SELECT id, name, employee.deptno, deptname
   FROM employee
   INNER JOIN department ON employee.deptno = department.deptno;
 
-- 2. We will use the employee and department tables to show how a left join works. This example will help you understand how to combine data from two tables while keeping all records from the left (first) table.
SELECT id, name, employee.deptno, deptname
   FROM employee
   LEFT JOIN department ON employee.deptno = department.deptno;

-- 3. Demonstrate a RIGHT JOIN using employee and department tables. This query retrieves all departments and matching employees.
SELECT id, name, employee.deptno, deptname
    FROM employee
    RIGHT JOIN department ON employee.deptno = department.deptno;

-- 4. Demonstrate a FULL JOIN operation using the employee and department tables.
SELECT id, name, employee.deptno, deptname
    FROM employee
    FULL JOIN department ON employee.deptno = department.deptno;

-- 5. Demonstrate a cross join operation using the employee and department tables. This query returns all possible combinations of employees and departments.
SELECT id, name, employee.deptno, deptname
    FROM employee
    CROSS JOIN department;

-- 6. This example shows how to use a semi join between employee and department tables. A semi join returns records from the first table (employee) where there is a matching record in the second table (department).
```{code} sql
SELECT *
    FROM employee
    SEMI JOIN department ON employee.deptno = department.deptno;
Copy
  1. Nous utiliserons deux exemples de tables = (« employé » et « département ») pour illustrer le fonctionnement d’une jointure interne. Une jointure interne combine les lignes des deux tables lorsqu’il existe une correspondance entre les colonnes spécifiées.

id

name

deptno

deptname

103

Paul

3

Engineering

101

John

1

Marketing

102

Lisa

2

Sales


  1. Nous utiliserons les tables employé et département pour illustrer le fonctionnement d’une jointure gauche. Cet exemple vous aidera à comprendre comment combiner les données de deux tables tout en conservant tous les enregistrements de la table de gauche (la première).

id

name

deptno

deptname

105

Chloe

5

null

103

Paul

3

Engineering

101

John

1

Marketing

102

Lisa

2

Sales

104

Evan

4

null

106

Amy

6

null


  1. Utilisons les tables employé et département pour montrer comment fonctionne une JOIN RIGHT dans SQL.

id

name

deptno

deptname

103

Paul

3

Engineering

102

Lisa

2

Sales

101

John

1

Marketing


  1. Utilisons les tables employé et département pour illustrer le fonctionnement d’une jointure complète. Une jointure complète combine tous les enregistrements des deux tables, y compris les lignes sans correspondance de l’une ou l’autre table.

id

name

deptno

deptname

101

John

1

Marketing

102

Lisa

2

Sales

103

Paul

3

Engineering

104

Evan

4

null

105

Chloe

5

null

106

Amy

6

null


  1. Créez une jointure croisée entre les tables employé et département pour montrer comment combiner chaque ligne d’une table avec chaque ligne d’une autre table.

id

name

deptno

deptname

105

Chloe

5

Engineering

105

Chloe

5

Sales

105

Chloe

5

Marketing

103

Paul

3

Engineering

103

Paul

3

Sales

103

Paul

3

Marketing

101

John

1

Engineering

101

John

1

Sales

101

John

1

Marketing

102

Lisa

2

Engineering

102

Lisa

2

Sales

102

Lisa

2

Marketing

104

Evan

4

Engineering

104

Evan

4

Sales

104

Evan

4

Marketing

106

Amy

6

Engineering

106

Amy

6

Sales

106

Amy

6

Marketing


  1. Utilisons les tables employé et département pour illustrer le fonctionnement d’une jointure partielle. Une jointure partielle renvoie les enregistrements de la première table lorsqu’il existe un enregistrement correspondant dans la seconde table.

id

name

deptno

103

Paul

3

101

John

1

102

Lisa

2

Snowflake

-- 1. Use employee and department tables to demonstrate inner join.
SELECT id, name, employee.deptno, deptname
   FROM employee
   INNER JOIN department ON employee.deptno = department.deptno;
 
-- 2. Use employee and department tables to demonstrate left join.
SELECT id, name, employee.deptno, deptname
   FROM employee
   LEFT JOIN department ON employee.deptno = department.deptno;


-- 3. Use employee and department tables to demonstrate right join.
SELECT id, name, employee.deptno, deptname
    FROM employee
    RIGHT JOIN department ON employee.deptno = department.deptno;


-- 4. Use employee and department tables to demonstrate full join.
SELECT id, name, employee.deptno, deptname
    FROM employee
    FULL JOIN department ON employee.deptno = department.deptno;


-- 5. Use employee and department tables to demonstrate cross join.
SELECT id, name, employee.deptno, deptname
    FROM employee
    CROSS JOIN department;

-- 6. Use employee and department tables to demonstrate semi join.
SELECT e.*
    FROM employee e, department d
    WHERE e.deptno = d.deptno;
Copy
  1. Nous utiliserons deux exemples de tables = (« employé » et « département ») pour illustrer le fonctionnement d’une jointure interne. Une jointure interne combine les enregistrements des deux tables pour lesquels il existe une valeur correspondante dans les colonnes spécifiées.

id

name

deptno

deptname

103

Paul

3

Engineering

101

John

1

Marketing

102

Lisa

2

Sales


  1. Utilisez les tables employé et département pour illustrer la jointure gauche.

id

name

deptno

deptname

105

Chloe

5

null

103

Paul

3

Engineering

101

John

1

Marketing

102

Lisa

2

Sales

104

Evan

4

null

106

Amy

6

null


  1. Utilisons les tables employé et département pour illustrer le fonctionnement d’une jointure droite.

id

name

deptno

deptname

103

Paul

3

Engineering

102

Lisa

2

Sales

101

John

1

Marketing


  1. Utilisons les tables employé et département pour illustrer le fonctionnement d’une jointure complète. Une jointure complète combine tous les enregistrements des deux tables, y compris les lignes sans correspondance de l’une ou l’autre table.

id

name

deptno

deptname

105

Chloe

5

null

103

Paul

3

Engineering

101

John

1

Marketing

102

Lisa

2

Sales

104

Evan

4

null

106

Amy

6

null


  1. Créez une jointure croisée entre les tables employé et département pour montrer comment chaque employé peut être associé à chaque département. Cet exemple montre comment fonctionnent les jointures croisées en combinant toutes les combinaisons possibles de lignes des deux tables.

id

name

deptno

deptname

105

Chloe

5

Engineering

105

Chloe

5

Sales

105

Chloe

5

Marketing

103

Paul

3

Engineering

103

Paul

3

Sales

103

Paul

3

Marketing

101

John

1

Engineering

101

John

1

Sales

101

John

1

Marketing

102

Lisa

2

Engineering

102

Lisa

2

Sales

102

Lisa

2

Marketing

104

Evan

4

Engineering

104

Evan

4

Sales

104

Evan

4

Marketing

106

Amy

6

Engineering

106

Amy

6

Sales

106

Amy

6

Marketing


  1. Utilisons les tables employé et département pour illustrer le fonctionnement d’une jointure partielle. Une jointure partielle renvoie les enregistrements de la première table lorsqu’il existe un enregistrement correspondant dans la seconde table.

id

name

deptno

103

Paul

3

101

John

1

102

Lisa

2

Problèmes connus

Aucun problème n’a été trouvé