Conceitos
Quando fazendo join de dados de duas ou mais tabelas que tem nomes de colunas duplicados, é necessário qualificar este nomes ao se referir a eles na declaração SQL.
Por exemplo, as tabelas abaixo apresentam o mesmo nome para a coluna de código de produto (CODPROD).
Tabela Peças
| PECA | CODPROD |
FORNECEDOR |
| FIO | 10 |
AMCO |
| VIDRO |
35 |
BRADCO |
| PLASTICO |
50 |
CHEM_OK |
| MAGNETO |
10 |
TURNER |
| LAMINAS |
250 |
HOWARTH |
Tabela Produtos
| CODPROD | PRODUTO |
PREÇO |
| 250 |
SERRA |
22.00 |
| 10 |
ALTERNADOR |
55.50 |
| 45 |
ALICATE |
75.75 |
| 50 |
RELE |
12.25 |
Inner join que utiliza nomes qualificadores.
| SELECT | PW0001.PECAS.PECA, PW0001.PECAS.FORNECEDOR , |
| PW0001.PECAS.CODPROD, PW0001.PRODUTOS.PRODUTO |
|
| FROM PW0001.PECAS | |
| INNER JOIN PW0001.PRODUTOS | |
| ON PW0001.PECAS.CODPROD = PW0001.PRODUTOS.CODPROD |
O mesmo inner join com sinonimos nos nomes qualificadores.
| SELECT | A.PECA, A.FORNECEDOR, A.CODPROD, B.PRODUTO |
| FROM PW0001.PECAS A | |
| INNER JOIN PW0001.PRODUTOS B | |
| ON A.CODPROD = B.CODPROD |
Tabela Resultado
| PEÇA | FORNECEDOR |
CODPROD |
PRODUTO |
| MAGNETO |
TURNER |
10 |
ALTERNADOR |
| FIO |
AMCO |
10 |
ALTERNADOR |
| PLASTICO |
CHEM_OK |
50 |
RELE |
| LAMINAS |
HOWARTH |
250 |
SERRA |
O nome qualificador é composto do nome da tabela e do nome da coluna.
O sinonimo é um nome alternativo dado à tabela dentro da declaração SELECT e pode ser usado nos nomes qualificadores.
Se a cláusula ORDER BY não for codificada a sequencia de linhas na tabela resultado é imprevisível.
No exemplo acima, a peça VIDRO na tabela PECAS não está na tabela PRODUTOS. O produto ALICATE na tabela PRODUTOS não está na tabela PECAS. Na tabela resultado, nem ALICATE nem VIDRO aparecem.