|
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_name |
Sales |
Date |
| Los Angeles |
1500 € |
05-Jan-1999 |
| San Diego |
250 € |
07-Jan-1999 |
| Los Angeles |
300 € |
08-Jan-1999 |
| Boston |
700 € |
08-Jan-1999 |
Tabela Geography
| region_name |
store_name |
| East |
Boston |
| East |
New York |
| West |
Los Angeles |
| West |
San 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 © 2013 1keydata.com Todos os direitos reservados.
|