INNER JOIN (jun????o interna) ?? uma Opera????o JOIN que permite especificar uma cl??usula de jun????o expl??cita.
Express??oTabela [ INNER ] JOIN Express??oTabela { ON Express??oBooleana }
A cl??usula de jun????o pode ser especificada utilizando ON com uma express??o booleana.
SELECT * FROM SAMP.EMPREGADOS INNER JOIN SAMP.EQUIPES ON EMPREGADOS.SAL??RIO < EQUIPES.SAL??RIO;
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).
-- Jun????o das tabelas ATIV_EMP e EMPREGADOS -- selecionar todas as colunas da tabela ATIV_EMP e -- adicionar o sobrenome do empregado (??LTIMO_NOME) da tabela -- EMPREGADOS a todas as linhas do resultado SELECT SAMP.ATIV_EMP.*, ??LTIMO_NOME FROM SAMP.ATIV_EMP JOIN SAMP.EMPREGADO ON ATIV_EMP.NUM_EMP = EMPREGADOS.NUM_EMP; -- Juntar as 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 JOIN SAMP.DEPARTAMENTOS ON DEP_TRAB = NUM_DEP AND YEAR(DATA_NASC) < 1930; -- Outro exemplo de "gerar" novos valores de dado, -- utilizando uma consulta que seleciona da cl??usula VALUES -- (que ?? uma forma alternativa de FULLSELECT). SELECT * FROM (VALUES (3, 4), (1, 5), (2, 6)) AS TABELA1_VALORES(C1, C2) JOIN (VALUES (3, 2), (1, 2),(0, 3)) AS TABELA2_VALORES(C1, C2) ON TABELA1_VALORES.C1 = TABELA2_VALORES.C1; O que resulta em: C1 |C2 |C1 |2 ----------------------------------------------- 3 |4 |3 |2 1 |5 |1 |2 -- Listar todos os departamentos, juntamente com o -- n??mero do empregado e o ??ltimo nome do gerente SELECT NUM_DEP, NOME_DEP, NUM_EMP, ??LTIMO_NOME FROM DEPARTAMENTOS INNER JOIN EMPREGADOS ON NUM_GER = NUM_EMP; -- Listar todos os n??meros do empregado e ??ltimo nome, juntamente -- com o n??mero do empregado e ??ltimo nome de seus gerentes SELECT E.NUM_EMP, E.??LTIMO_NOME, M.NUM_EMP, M.??LTIMO_NOME FROM EMPREGADOS E INNER JOIN DEPARTAMENTOS INNER JOIN EMPREGADOS M ON NUM_GER = M.NUM_EMP ON E.DEP_TRAB = NUM_DEP;