LEFT OUTER JOIN

LEFT OUTER JOIN é uma Operação JOIN que permite especificar a cláusula de junção. Preserva as linhas sem correspondência da primeira tabela (esquerda), juntando-as com uma linha nula na forma da segunda tabela (direita).

Sintaxe

ExpressãoTabela LEFT [ OUTER ] JOIN ExpressãoTabela
{
    ON ExpressãoBooleana
    }

O escopo das expressões na cláusula ON inclui as tabelas correntes, e as tabelas nos blocos de consulta externos ao SELECT corrente. A cláusula ON pode fazer referência a tabelas que não estão sendo juntadas, e não é obrigada a fazer referência a nenhuma das tabelas sendo juntadas (embora tipicamente o faça).

--correspondência entre cidades e países
SELECT CIDADES.PAÍS, REGIÃO
FROM PAÍSES
     LEFT OUTER JOIN CIDADES
     ON ID_CIDADE=ID_CIDADE
WHERE REGIÃO = 'Ásia';

-- uso da sintaxe sinônimo, LEFT JOIN, para obter exatamente
-- os mesmos resultados da exemplo acima
SELECT CIDADES.PAÍS, REGIÃO
FROM PAÍSES
     LEFT JOIN CIDADES
     ON ID_CIDADE=ID_CIDADE
WHERE REGIÃO = 'Ásia';

-- Junção das tabelas EMPREGADOS e DEPARTAMENTOS,
-- selecionar o número do empregado (NUM_EMP),
-- o sobrenome do empregado (ÚLTIMO_NOME),
-- o número do departamento (DEP_TRAB na tabela EMPREGADOS e
-- NUM_DEP na tabela DEPARTAMENTOS)
-- e o nome do departamento (NOME_DEP)
-- de todos os empregados nascidos (DATA_NASC) antes de 1930
SELECT NUM_EMP, ÚLTIMO_NOME, DEP_TRAB, NOME_DEP
FROM SAMP.EMPREGADOS
     LEFT OUTER JOIN SAMP.DEPARTAMENTOS
     ON DEP_TRAB = NUM_DEP
     AND YEAR(DATA_NASC) < 1930;

-- Listar todos os departamentos, juntamente com o
-- número do empregado e o último nome do gerente,
-- incluindo os departamentos sem gerente
SELECT NUM_DEP, NOME_DEP, NUM_EMP, ÚLTIMO_NOME
FROM DEPARTAMENTOS
     LEFT OUTER JOIN EMPREGADOS
     ON NUM_GER = NUM_EMP;

Conceitos relacionados
Interação com o sistema de dependências
Instruções CREATE
Instruções DROP
Instruções RENAME
Instruções SET
Referências relacionadas
Instrução ALTER TABLE
CALL (PROCEDIMENTO)
Cláusula CONSTRAINT
Instrução DECLARE GLOBAL TEMPORARY TABLE
Instrução DELETE
Cláusula FOR UPDATE
Cláusula FROM
Cláusula GROUP BY
Cláusula HAVING
INNER JOIN
Instrução INSERT
Operação JOIN
Instrução LOCK TABLE
Cláusula ORDER BY
Consulta
RIGHT OUTER JOIN
SubconsultaEscalar
ExpressãoSeleção
Instrução SELECT
ExpressãoTabela
SubconsultaTabela
Instrução UPDATE
VALUES Expressão
Cláusula WHERE
Cláusula WHERE CURRENT OF