SQLite Self-Join
Resumo: neste tutorial, você irá aprender sobre um tipo especial de join chamado SQLite self-join que lhe permite juntar a tabela a si mesmo.
Note que você deve estar familiarizado comINNER JOIN
eLEFT JOIN
cláusulas antes de avançar com este tutorial.
Introdução à auto-junção SQLite
a auto-junção é um tipo especial de junção que permite que você se junte a uma tabela para si mesmo usando ou LEFT JOIN
ou INNER JOIN
cláusula. Você usa self-join para criar um conjunto de resultados que junta as linhas com as outras linhas dentro da mesma tabela.
porque você não pode se referir à mesma tabela mais do que uma em uma consulta, você precisa usar um nome alternativo de tabela para atribuir à tabela um nome diferente quando você usa auto-adesão.
a auto-junção compara valores das mesmas colunas ou colunas diferentes na mesma tabela. Apenas uma mesa está envolvida na auto-adesão.
muitas vezes usa a auto-adesão para consultar a relação pais/filhos guardada numa tabela ou para obter os totais em execução.
SQLite self-join examples
we will use the employees
table in the sample database for demonstration.
employees
tabela armazena não só os dados dos funcionários, mas também com os dados organizacionais. A coluna ReportsTo
especifica a relação de reporte entre empregados.
If an employee reports to a manager, the value of theReportsTo
column of the employer’s row is equal to the value of theEmployeeId
column of the manager’s row. No caso de um empregado não reportar a ninguém, a coluna ReportsTo
NULL
.
para obter a informação sobre quem é o relatório direto de quem, você usa a seguinte declaração:
Tentar
A instrução utilizados o INNER JOIN
cláusula join employees
para si. A tabelaemployees
tem duas funções: empregados e gestores.
como usamos o INNER JOIN
cláusula join employees
tabela própria, o conjunto de resultados não tem a linha com o gerenciador de coluna contém um NULL
valor.
Note that the concatenation operator ||
concatenates multiple strings into a single string. No exemplo, usamos o operador de concatenação para os nomes completos dos funcionários, concatenando o primeiro nome, espaço e sobrenome.
no caso de querer consultar o CEO que não reporta a ninguém, você precisa mudar a cláusula INNER JOIN
cláusula para LEFT JOIN
cláusula na consulta acima.
Andrew Adams
é o CEO porque ele não comunica a ninguém.
Você pode usar o auto-junte-se a técnica para encontrar os funcionários localizados na mesma cidade, como a consulta a seguir:
Tentar
A condição de associação tem duas expressões:
-
e1.city = e2.city
para se certificar de que os funcionários localizado na mesma cidade -
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
para garantir quee1
ee2
não são o mesmo funcionário, com a suposição de que não haja funcionários que têm o mesmo nome e sobrenome.
neste tutorial, mostramos – lhe como usar a técnica de auto-junção SQLite para juntar uma tabela a si mesma.
- este tutorial foi útil ?
- YesNo