# 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;

Tópico pai: Instruções
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