Combina registos da tabela de origem quando utilizado numa cláusula FROM.
Sintaxe
FROM tabela1 [ LEFT | RIGHT ] JOIN tabela2
ON tabela1.campo1opcomp tabela2.campo2As operações LEFT JOIN e RIGHT JOIN têm 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 são associados. 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
Utilize uma operação LEFT JOIN para criar uma associação externa à esquerda. As associações externas à esquerda incluem todos os registos da primeira (esquerda) de duas tabelas, mesmo que não existam valores correspondentes para registos na segunda (direita) tabela.
Utilize uma operação RIGHT JOIN para criar uma associação externa à direita. As associações externas à direita incluem todos os registos da segunda (direita) de duas tabelas, mesmo que não existam valores correspondentes para registos na primeira (esquerda) tabela.
Por exemplo, pode utilizar uma operação LEFT JOIN com as tabelas Departamentos (esquerda) e Funcionários (direita) para selecionar todos os departamentos, incluindo os que não têm funcionários atribuídos. Para selecionar todos os funcionários, incluindo os que não estão atribuídos a um departamento, deve utilizar uma operação RIGHT JOIN.
O exemplo seguinte mostra como pode associar as tabelas Categorias e Produtos no campo CategoryID. A consulta cria uma lista de todas as categorias, incluindo as que não contêm produtos:
SELECT CategoryName, ProductName FROM Categories LEFT JOIN Products ON Categories.CategoryID = Products.CategoryID;
Neste exemplo, CategoryID é o campo associado, mas não é incluído nos resultados da consulta porque não está incluído na instrução SELECT. Para incluir o campo associado, introduza o nome do campo na instrução SELECT – neste caso, Categories.CategoryID.
Para criar uma consulta que inclui apenas registos nos quais os dados nos campos associados são iguais, utilize uma operação INNER JOIN.
-
Uma operaçã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 operação LEFT JOIN ou RIGHT JOIN. Veja o debate no tópico sobre como aninhar na INNER JOIN para saber como aninhar associações dentro de outras associações.
-
Pode ligar múltiplas cláusulas ON. Veja o debate no tópico sobre como ligar cláusulas na INNER JOIN para saber como isto é feito.
Se tentar associar campos que contenham dados do tipo Memo ou Objeto OLE, será apresentado um erro.