Conceitos
Tabela de Itens Acabados (ASSM)
| ACODE | DESC |
| A1 |
TABLE 24X36 |
| A2 |
TABLE 30X60 |
| A3 |
TABLE & RETURN |
Tabela de Peças (PARTLIST)
| ACODE | CCODE |
QTY |
| A1 |
C1 |
1 |
| A1 |
C3 |
4 |
| A2 |
C2 |
1 |
| A2 |
C3 |
4 |
| A3 |
C1 |
1 |
| A3 |
C2 |
1 |
| A3 |
C3 |
6 |
| A3 |
C4 |
1 |
Tabela de Componentes (CMPT)
| CCODE | DESC |
| C1 |
TABLE TOP 24X36 |
| C2 |
TABLE TOP 30X60 |
| C3 |
TABLE LEG |
| C4 |
RETURN CONNECTOR |
As tabelas acima são parte de uma estrutura de inventário de uma companhia que monta móveis de escritório.
A tabela ASSM contém a lista de todos os móveis montados pela companhia. A tabela PARTLIST contém uma linha para cada peça necessária para a montagem. A tabela CMPT contém uma linha para cada componente necessário à montagem. Na tabela PARTLIST, as colunas ACODE e CCODE são foreign keys.
A lista de componentes necessários a cada montagem exige dados das três tabelas.
Inner join implícito
| SELECT | A.ACODE AS ASSM_CODE, A.DESC AS ASSM_DESC, |
| PL.CCODE AS CMPT_CODE, C.DESC AS CMPT_DESC, |
|
| PL,QTY AS QUANTITY | |
| FROM | PW0001.PARTLIST PL, PW0001.CMPT C, PW0001.ASSM A |
| WHERE | A.ACODE = PL.ACODE |
| AND | C.CCODE = PL.CCODE |
| ORDER BY | ASSM_CODE, CMPT_CODE |
Inner join explícito
| SELECT | A.ACODE AS ASSM_CODE, A.DESC AS ASSM_DESC, |
| PL.CODE AS CMPT_CODE, C.DESC AS CMPT_DESC, | |
| PL.QTY AS QUANTITY | |
| FROM | PW0001.PARTLIST PL |
| INNER JOIN | PW0001.ASSM A |
| ON A.ACODE = PL.ACODE |
|
| INNER JOIN | PW0001.CMPT C |
| ON C.CCODE = PL.CCODE |
|
| ORDER BY | ASSM_CODE, CMPT_CODE |
Tabela Resultado
| ASSM_CODE | ASSM_DESC |
CMPT_CODE |
CMPT_DESC |
QUANTITY |
| A1 | TABLE 24X36 |
C1 |
TABLE TOP 24X36 |
1 |
| A1 |
TABLE 24X36 |
C3 | TABLE LEG | 4 |
| A2 | TABLE 30X60 |
C2 | TABLE TOP 24X36 |
1 |
| A2 | TABLE 30X60 |
C3 | TABLE LEG |
4 |
| A3 | TABLE & RETURN | C1 | TABLE TOP 24X36 |
1 |
| A3 | TABLE & RETURN |
C2 | TABLE TOP 24X36 |
1 |
| A3 | TABLE & RETURN |
C3 | TABLE LEG |
6 |
| A3 | TABLE & RETURN |
C4 | RETURN CONNECTOR | 1 |
Quando um join de três ou mais tabelas é executado, são feitos vários passos para combinar as tabelas.
Em cada passo, a tabela composite (outer table) é combinada com a tabela nova (inner table). No primeiro passo a tabela composite é a primeira tabela nomeada na declaração. Dái em diante a tabela composite é a tabela intermediária criada no passo anterior. Nos exemplo explícito acima, o primeiro passo é combinar a tabela PARTLIST com a tabela ASSM, criando a tabela intermediária (composite). No segundo passo a tabela intermediária (composite) é combinada com a tabela CMTP (tabela nova).