Resumo: neste tutorial, você aprenderá como usar o PostgreSQL LEFT JOIN
cláusula para selecionar dados de várias tabelas.
Introdução à cláusula de junção à esquerda do PostgreSQL
suponha que tem duas tabelas: A
e B
.,
Cada linha na tabela A
pode ter zero ou muitas linhas correspondentes na tabela B
enquanto cada linha na tabela B
tem uma, e somente uma linha correspondente na tabela A
.
Para selecionar dados de uma tabela A
que pode ou não pode ter linhas correspondentes na tabela B
, você pode usar o LEFT JOIN
cláusula.,
a instrução A seguir ilustra o LEFT JOIN
sintaxe que associa a tabela A
com a tabela B
:
Code language: SQL (Structured Query Language) (sql)
Para entrar na tabela de A
com a tabela B
tabela usando um left join, siga estes passos:
- Primeiro, especifique as colunas em ambas as tabelas a partir do qual você deseja selecionar dados
SELECT
cláusula. - Em segundo lugar, especificar a tabela à esquerda (tabela
A
) na cláusulaFROM
., - Terceiro, especifique o direito de tabela (tabela
B
)LEFT JOIN
cláusula e a condição de associação após oON
palavra-chave.
a cláusulaLEFT JOIN
começa a seleccionar os dados da tabela esquerda. Para cada linha da tabela esquerda, compara o valor na coluna pka
com o valor de cada linha na coluna fka
na tabela direita.,
se estes valores forem iguais, a cláusula de junção à esquerda cria uma nova linha que contém colunas que aparecem no id
e adiciona esta linha ao conjunto de resultados.
no caso destes valores não serem iguais, a cláusula de junção à esquerda também cria uma nova linha que contém colunas que aparecem na cláusula SELECT
. Além disso, preenche as colunas que vêm da mesa direita com NULL.,
O seguinte diagrama de Venn ilustra como o LEFT JOIN
cláusula funciona:
Note que o LEFT JOIN
é também referido como LEFT OUTER JOIN
.
exemplos de junção à esquerda de PostgreSQL
vamos olhar para as seguintes tabelas film
e inventory
da base de dados de amostras.,
Cada linha film
tabela pode ter zero ou várias linhas inventory
tabela. Cada linha na tabelainventory
tem uma e apenas uma linha na tabelafilm
.
Thefilm_id
column establishs the link between thefilm
andinventory
tables.,
a instrução A seguir usa o LEFT JOIN
cláusula join film
tabela com inventory
tabela:
Quando uma linha de film
tabela não tem uma linha correspondente na inventory
tabela, o valor de inventory_id
coluna desta linha é NULL
.,
a seguinte declaração acrescenta uma cláusula
para encontrar os filmes que não estão no inventário:
a seguinte declaração devolve o mesmo resultado., A diferença é que ele usa a tabela de aliases para tornar a consulta mais concisa:
Se ambas as tabelas têm o mesmo nome de coluna usado no ON
cláusula, você pode usar o USING
sintaxe:
Esta técnica é útil quando você deseja selecionar linhas de uma tabela que não possuem linhas correspondentes na outra tabela.