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