Escolar Documentos
Profissional Documentos
Cultura Documentos
Exibindo Dados
de Múltiplas Tabelas
Agenda
• O que é um JOIN
• Natural Join
• Simple Join – EquiJoin
• Alias
• SelfJoin
• NonEquijoins
• OuterJoin
– Left Outer Join
– Right Outer Join
– Full Outer Join
• Cross Join
• Exercícios
• Bibliografia
Ligações
Ligações (Joins)
Uma ligação é usada quando a pesquisa SQL requer dados de mais
de uma tabela do Banco de Dados.
1) Equi-join
2) Non-equi-join
3) Outer-Join
Ligações
EquiJoin
SELECT coluna(s)
FROM tabela(s)
WHERE condição de ligação
Ligações
Extraindo Dados de Mais de uma Tabela – Equi-Join
Departments ...
retornará 56 registros.
… …
Ou
SELECT e.last_name emp, m.last_name mgr
FROM employees e, employees m
WHERE e.manager_id = m.employee_id;
…
Join entre três Tabelas
SELECT employee_id, city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
Ou
…
NonEquijoins - [rodar script job_grades.sql]
EMPLOYEES JOB_GRADES
Ou
…
LEFT OUTER, RIGHT OUTER e FULL OUTER JOIN
LEFT RIGHT
OUTER OUTER
JOIN
FULL
OUTER JOIN
OUTER
Outer Join
Além de mostrar registros cujos campos em comum estejam presentes
nas duas tabelas, ainda mostram os que faltam.
• Neste caso, a tabela DEPARTMENTS possui o departamento de Contracting que não
possui nenhum EMPLOYEES alocado.
• No caso de uma consulta na tabela de EMPLOYEES o departamento 190 é o único que
não aparecerá.
DEPARTMENTS EMPLOYEES
…
Right Outer Join (+)
Usando o Operador (+)
O símbolo (+) deve ser inserido junto ao nome da tabela que não tem
linhas correspondentes.
…
Left Outer Join
Usando o Operador (+)
SELECT E.First_Name, E.Last_Name, D.Department_Name
FROM Employees E, Departments D
WHERE E.Department_ID = D.Department_ID (+)
ORDER BY D.Department_Name
...
Full Outer Join
A B
…
Produto Cartesiano
Produto
cartesiano:
20 x 8 = 160 rows
…
Cross Join
• O Cross Join retorna o produto cartesiano de 2 tabelas.
…
Ligações
Resumo do comando SELECT