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
SELECTcláusula. - Em segundo lugar, especificar a tabela à esquerda (tabela
A) na cláusulaFROM., - Terceiro, especifique o direito de tabela (tabela
B)LEFT JOINcláusula e a condição de associação após oONpalavra-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 inventorytabela. 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 inventorytabela:
Quando uma linha de film tabela não tem uma linha correspondente na inventorytabela, 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.