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 [, ...] ) }
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>
[ ... ]
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' );
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);
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;
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 |
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 |
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 |
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 |
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 |
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;
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 |
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 |
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 |
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 |
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 |
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é