Combina os registos de duas tabelas sempre que existam valores correspondentes num campo comum.
Sintaxe
FROM table1 INNER JOIN table2 ON table1.tabeladepopr field12.campo2
A operação INNER JOIN tem as seguintes partes:
Parte |
Descrição |
tabela1, tabela2 |
Os nomes das tabelas das quais os registos são combinados. |
campo1, campo2 |
Os nomes dos campos que estão associados. Se não forem numéricos, os campos têm de ter o mesmo tipo de dados mas não necessitam de ter o mesmo nome. |
opcomp |
Qualquer operador de comparação relacional: "=", "<", ">", "<=", ">=" ou "<>". |
Observações
Pode utilizar uma operação INNER JOIN em qualquer cláusula FROM. Este é o tipo de associação mais comum. As associações internas combinam os registos de duas tabelas sempre que existam valores correspondentes num campo comum a ambas as tabelas.
Pode utilizar uma operação INNER JOIN nas tabelas Departments e Employees para selecionar todos os funcionários em cada departamento. Por outro lado, para selecionar todos os departamentos (mesmo que alguns não tenham funcionários atribuídos aos mesmos) ou todos os funcionários (mesmo que alguns não estejam atribuídos a um departamento), pode utilizar uma operação de LEFT JOIN ou RIGHT JOIN para criar uma associação externa.
Se tentar associar campos que contenham dados do tipo Memo ou Objeto OLE, será apresentado um erro.
Pode associar dois campos numéricos de tipos semelhantes. Por exemplo, pode associar campos de Numeração Automática e campos Longos porque são tipos semelhantes. Porém, não pode associar os tipos de campos Simples e Duplo.
O exemplo seguinte mostra como pode associar as tabelas Categories e Products no campo CategoryID:
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID;
No exemplo anterior, CategoryID é o campo associado, mas não é incluído no resultado da consulta porque não está incluído na instrução SELECT. Para incluir o campo associado, inclua o nome do campo na instrução SELECT – neste caso, Categories.CategoryID.
Também pode ligar várias cláusulas ON numa instrução JOIN, ao utilizar a seguinte sintaxe:
SELECT campos
FROM tabela1 INNER JOIN tabela2 ON tabela1.campo1opcomptabela2.campo1 AND ON tabela1.campo2opcomptabela2.campo2) OR ON tabela1.campo3opcompcampo2.campo3)];Também pode aninhar instruções JOIN ao utilizar a sintaxe seguinte:
SELECT campos
FROM tabela1 INNER JOIN (tabela2 INNER JOIN [( ]tabela3 [INNER JOIN [( ]tabelax [INNER JOIN ...)] ON tabela3.campo3opcomptabelax.campox)] ON tabela2.campo2opcomptabela3.campo3) ON tabela1.campo1opcomptabela2.campo2;Uma instrução LEFT JOIN ou RIGHT JOIN pode ser aninhada dentro de uma INNER JOIN, mas uma INNER JOIN não pode ser aninhada dentro de uma instrução LEFT JOIN ou RIGHT JOIN.