Snowpark Migration Accelerator: Join

Descrição

Mescla linhas de duas referências de tabela usando as condições de junção especificadas. Para obter mais detalhes, consulte a Referência da linguagem SQL do Databricks JOIN.

JOIN combina dados de duas origens (como tabelas ou exibições) em um único conjunto de resultados. Cada linha do resultado contém colunas de ambas as origens com base em uma condição especificada. Para obter uma explicação detalhada das junções, consulte Como trabalhar com junções. (Referência da linguagem SQL do Snowflake JOIN)

Sintaxe

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

Amostra de padrões da origem

Dados de configuração

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

Código do padrão

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).
```sql
SELECT *
    FROM employee
    SEMI JOIN department ON employee.deptno = department.deptno;
Copy
  1. Usaremos duas tabelas de amostra - «employee» e «department» - para mostrar como funciona uma junção interna. Uma junção interna combina linhas de ambas as tabelas em que há uma correspondência entre as colunas especificadas.

id

name

deptno

deptname

103

Paul

3

Engenharia

101

John

1

Marketing

102

Lisa

2

Vendas


  1. Usaremos as tabelas employee e department para mostrar como funciona uma junção esquerda. Este exemplo ajudará a entender como combinar dados de duas tabelas, mantendo todos os registros da tabela da esquerda (primeira).

id

name

deptno

deptname

105

Chloe

5

nulo

103

Paul

3

Engenharia

101

John

1

Marketing

102

Lisa

2

Vendas

104

Evan

4

nulo

106

Amy

6

nulo


  1. Vamos usar as tabelas employee e department para mostrar como RIGHT JOIN funciona em SQL.

id

name

deptno

deptname

103

Paul

3

Engenharia

102

Lisa

2

Vendas

101

John

1

Marketing


  1. Vamos usar as tabelas employee e department para mostrar como funciona uma junção completa. Uma junção completa combina todos os registros de ambas as tabelas, inclusive as linhas não correspondentes de qualquer uma delas.

id

name

deptno

deptname

101

John

1

Marketing

102

Lisa

2

Vendas

103

Paul

3

Engenharia

104

Evan

4

nulo

105

Chloe

5

nulo

106

Amy

6

nulo


  1. Crie uma junção cruzada entre as tabelas employee e department para mostrar como combinar cada linha de uma tabela com cada linha de outra tabela.

id

name

deptno

deptname

105

Chloe

5

Engenharia

105

Chloe

5

Vendas

105

Chloe

5

Marketing

103

Paul

3

Engenharia

103

Paul

3

Vendas

103

Paul

3

Marketing

101

John

1

Engenharia

101

John

1

Vendas

101

John

1

Marketing

102

Lisa

2

Engenharia

102

Lisa

2

Vendas

102

Lisa

2

Marketing

104

Evan

4

Engenharia

104

Evan

4

Vendas

104

Evan

4

Marketing

106

Amy

6

Engenharia

106

Amy

6

Vendas

106

Amy

6

Marketing


  1. Vamos usar as tabelas employee e department para mostrar como funciona uma semijunção. Uma semijunção retorna registros da primeira tabela quando há um registro correspondente na segunda tabela.

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. Usaremos duas tabelas de amostra - «employee» e «department» - para mostrar como funciona uma junção interna. Uma junção interna combina registros de ambas as tabelas em que há um valor correspondente nas colunas especificadas.

id

name

deptno

deptname

103

Paul

3

Engenharia

101

John

1

Marketing

102

Lisa

2

Vendas


  1. Use as tabelas employee e department para demonstrar a junção esquerda.

id

name

deptno

deptname

105

Chloe

5

nulo

103

Paul

3

Engenharia

101

John

1

Marketing

102

Lisa

2

Vendas

104

Evan

4

nulo

106

Amy

6

nulo


  1. Vamos usar as tabelas employee e department para mostrar como funciona uma junção direita.

id

name

deptno

deptname

103

Paul

3

Engenharia

102

Lisa

2

Vendas

101

John

1

Marketing


  1. Vamos usar as tabelas employee e department para mostrar como funciona uma junção completa. Uma junção completa combina todos os registros de ambas as tabelas, inclusive as linhas não correspondentes de qualquer uma delas.

id

name

deptno

deptname

105

Chloe

5

nulo

103

Paul

3

Engenharia

101

John

1

Marketing

102

Lisa

2

Vendas

104

Evan

4

nulo

106

Amy

6

nulo


  1. Crie uma junção cruzada entre as tabelas employee e department para mostrar como cada funcionário pode ser associado a cada departamento. Este exemplo demonstra como as junções cruzadas funcionam, com todas as combinações possíveis de linhas de ambas as tabelas.

id

name

deptno

deptname

105

Chloe

5

Engenharia

105

Chloe

5

Vendas

105

Chloe

5

Marketing

103

Paul

3

Engenharia

103

Paul

3

Vendas

103

Paul

3

Marketing

101

John

1

Engenharia

101

John

1

Vendas

101

John

1

Marketing

102

Lisa

2

Engenharia

102

Lisa

2

Vendas

102

Lisa

2

Marketing

104

Evan

4

Engenharia

104

Evan

4

Vendas

104

Evan

4

Marketing

106

Amy

6

Engenharia

106

Amy

6

Vendas

106

Amy

6

Marketing


  1. Vamos usar as tabelas employee e department para mostrar como funciona uma semijunção. Uma semijunção retorna registros da primeira tabela quando há um registro correspondente na segunda tabela.

id

name

deptno

103

Paul

3

101

John

1

102

Lisa

2

Problemas conhecidos

Não foram encontrados problemas