Snowpark Migration Accelerator: Verknüpfung (Join)¶
Beschreibung¶
Führt Zeilen aus zwei Tabellenreferenzen unter Verwendung der angegebenen Verknüpfungsbedingungen zusammen Weitere Einzelheiten finden Sie in deren Databricks SQL-Sprachreferenz JOIN.
Eine JOIN
kombiniert Daten aus zwei Quellen (z. B. Tabellen oder Ansichten) zu einem einzigen Resultset. Jede Zeile des Ergebnisses enthält Spalten aus beiden Quellen, die auf einer bestimmten Bedingung basieren. Eine ausführliche Erklärung von Joins (Verknüpfungen) finden Sie unterArbeiten mit Verknüpfungen (Joins) . (Snowflake SQL-Sprachreferenz JOIN)
Syntax¶
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>
[ ... ]
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
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);
Muster-Code¶
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;
Wir werden zwei Beispieltabellen - „employee“ and „department“ - verwenden, um zu zeigen, wie eine innere Verknüpfung (Inner Join) funktioniert. Eine innere Verknüpfung (Inner Join) kombiniert Zeilen aus beiden Tabellen, wenn eine Übereinstimmung zwischen den angegebenen Spalten besteht.
id |
name |
deptno |
deptname |
---|---|---|---|
103 |
Paul |
3 |
Engineering |
101 |
John |
1 |
Marketing |
102 |
Lisa |
2 |
Sales |
Wir werden die Tabellen „employee“ und „department“ verwenden, um zu zeigen, wie eine linke Verknüpfung (Left Join) funktioniert. Dieses Beispiel verdeutlicht, wie Sie Daten aus zwei Tabellen kombinieren und dabei alle Datensätze aus der linken (ersten) Tabelle beibehalten können.
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 |
Verwenden wir die Tabellen „employee” und „department ”, um zu zeigen, wie eine RIGHT JOIN in SQL funktioniert.
id |
name |
deptno |
deptname |
---|---|---|---|
103 |
Paul |
3 |
Engineering |
102 |
Lisa |
2 |
Sales |
101 |
John |
1 |
Marketing |
Lassen Sie uns anhand der Tabellen „employee” und „department ” zeigen, wie eine vollständige Verknüpfung (Full Join) funktioniert. Eine vollständige Verknüpfung (Full Join) kombiniert alle Datensätze aus beiden Tabellen, einschließlich nicht übereinstimmender Zeilen aus beiden Tabellen.
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 |
Erstellen Sie eine Kreuzverknüpfung (Cross Join) zwischen den Tabellen „employee” und „department ”, um zu zeigen, wie jede Zeile aus einer Tabelle mit jeder Zeile aus einer anderen Tabelle kombiniert wird.
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 |
Lassen Sie uns anhand der Tabellen „employee” und „department ” zeigen, wie eine Semi-Verknüpfung (Semi Join) funktioniert. Eine Semi-Verknüpfung (Semi Join) gibt Datensätze aus der ersten Tabelle zurück, in denen es einen übereinstimmenden Datensatz in der zweiten Tabelle gibt.
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;
Wir werden zwei Beispieltabellen - „employee“ and „department“ - verwenden, um zu zeigen, wie eine innere Verknüpfung (Inner Join) funktioniert. Ein innere Verknüpfung (Inner Join) kombiniert Datensätze aus beiden Tabellen, bei denen in den angegebenen Spalten ein übereinstimmender Wert vorhanden ist.
id |
name |
deptno |
deptname |
---|---|---|---|
103 |
Paul |
3 |
Engineering |
101 |
John |
1 |
Marketing |
102 |
Lisa |
2 |
Sales |
Verwenden Sie Tabellen „employee” und „department”, um linke Verknüpfung (Left Join) zu veranschaulichen.
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 |
Verwenden wir die Tabellen „employee” und „department”, um zu zeigen, wie eine linke Verknüpfung (Left Join) funktioniert.
id |
name |
deptno |
deptname |
---|---|---|---|
103 |
Paul |
3 |
Engineering |
102 |
Lisa |
2 |
Sales |
101 |
John |
1 |
Marketing |
Lassen Sie uns anhand der Tabellen „employee” und „department ” zeigen, wie eine vollständige Verknüpfung (Full Join) funktioniert. Eine vollständige Verknüpfung (Full Join) kombiniert alle Datensätze aus beiden Tabellen, einschließlich nicht übereinstimmender Zeilen aus beiden Tabellen.
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 |
Erstellen Sie eine Kreuzverknüpfung (Cross Join) zwischen den Tabellen „employee” und „department”, um zu zeigen, wie jeder Mitarbeiter jeder Abteilung zugeordnet werden kann. Dieses Beispiel veranschaulicht die Funktionsweise von Kreuzverknüpfung (Cross Join), indem alle möglichen Kombinationen von Zeilen aus beiden Tabellen kombiniert werden.
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 |
Lassen Sie uns anhand der Tabellen „employee” und „department ” zeigen, wie eine Semi-Verknüpfung (Semi Join) funktioniert. Eine Semi-Verknüpfung (Semi Join) gibt Datensätze aus der ersten Tabelle zurück, in denen es einen übereinstimmenden Datensatz in der zweiten Tabelle gibt.
id |
name |
deptno |
---|---|---|
103 |
Paul |
3 |
101 |
John |
1 |
102 |
Lisa |
2 |
Bekannte Probleme¶
Es wurden keine Probleme gefunden