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).
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;