SQL Outer Join




SQL > Comandos SQL > Outer Join

Anteriormente, abordamos a união esquerda, ou união interna, onde selecionamos linhas comuns nas tabelas participantes para uma união. E nos casos em que pretendemos selecionar elementos numa tabela independentemente de estarem presentes numa segunda tabela? Agora será necessário utilizar o comando SQL OUTER JOIN.

A sintaxe para efetuar uma união externa na linguagem SQL depende da base de dados. Por exemplo, em Oracle, iremos colocar o sinal "(+)" na cláusula WHERE no outro lado da tabela para a qual queremos incluir todas as linhas.

Suponhamos que temos as duas tabelas seguintes:

Tabela Store_Information
Store_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-Jan-1999

Tabela Geography
Region_NameStore_Name
EastBoston
EastNew York
WestLos Angeles
WestSan Diego

e queremos descobrir o montante de vendas de todas as lojas. Se efetuarmos uma união normal, não seremos capazes de obter o que pretendemos porque iremos ignorar "New York," pois não aparece na tabela Store_Information. Como tal, é necessário efetuar uma união externa nas duas tabelas acima:

SELECT A1.Store_Name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.Store_Name = A2.Store_Name (+)
GROUP BY A1.Store_Name;

Note que neste caso estamos a utilizar a sintaxe Oracle para a união externa.

Resultado:

Store_Name SALES
Boston 700
New York
Los Angeles 1800
San Diego 250

Nota: NULL é obtido quando não existir qualquer correspondência na segunda tabela. Nesse caso, "New York" não aparece na tabela Store_Information, e por isso a coluna "SALES" correspondente é NULL.

SQL Concatenate >>



Copyright © 2016   1keydata.com   Todos os direitos reservados.