Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

LINGUAGEM DE PROGRAMAÇÃO 
DE BANCO DE DADOS 
JUNÇÃO DE TABELAS 
 
 
Prof Luiz Antonio Gobitta 
ESTRUTURA DO BANCO DE DADOS 
ESTRUTURA DO BANCO DE DADOS 
O banco de Dados é composto pelas tabelas: 
• FUNCIONÁRIOS – hr.employees 
• DEPARTAMENTOS - hr.departments 
• LOCAIS - hr.locations 
• PAISES - hr.countries 
• REGIÕES – hr.regions 
• CARGOS - hr.jobs 
JUNÇÃO DE TABELAS 
Imagine que desejamos emitir um relatório 
contendo sobrenome e salário dos funcionários e o 
nome do departamento em que ele trabalha. 
Ao verificarmos na base vemos que o sobrenome e o 
salário estão na tabela Funcionários e o nome do 
departamento está na tabela Departamentos. 
Notamos também que a relação entre estas duas 
tabelas (entidades) é 1 departamento tem n 
funcionários, portanto vemos que na tabela 
Funcionários temos uma chave estrangeira que é o 
código do departamento. 
Junção Clássica 
Então precisamos juntar as informações da tabela 
Funcionários com a informação da tabela 
departamentos: 
SELECT last_name, salary, department_name 
FROM hr.employees , hr.departments 
WHERE hr.employees.department_id = 
hr.departments.department_id; 
Como department_id está presente nas 2 tabelas (mesmo 
nome),temos que informar a qual tabela nos referimos. 
Desta forma podemos juntar quantas tabelas 
forem necessárias, 2, 3, 4 ou mais. 
No nosso BD, temos: 
• hr.employees tem department_id e job_id 
como chaves estrangeiras ligando com hr.jobs 
e hr.departments. 
• hr.departments tem location_id como chave 
estrangeira ligando com hr.locations. 
• hr.locations tem country_id como chave 
estrangeira ligando com hr.countries. 
• hr.countries tem região_id como chave 
estrangeira ligando com Regíões. 
 
Exemplos 
 Crie uma query que mostre os sobrenomes dos funcionários, os 
hr.jobs e as respectivas descrições de job_id. 
select last_name, f.job_id, job_title 
from hr.employees f, hr.jobs c 
WHERE f.job_id = c.job_id 
 Crie uma consulta para o RH a fim de gerar os endereços de todas 
as unidades (filiais) da empresa. Mostre o ID do local, o endereço, 
a cidade, o estado e o país do depto. 
select l.location_id, l.street_address, l.city, 
l.state_province, p.country_name 
from hr.locations l, hr.countries p 
where l.country_id = p.country_id 
 
Exemplos 
O RH precisa de um relatório sobre os funcionários e 
os seus respectivos departamentos. Crie uma consuta 
que exiba o sobrenome, o salário, o nome do 
departamento e a descrição de cargo para todos os 
funcionários. 
select last_name, salary, department_name, 
job_title 
from hr.employees f,hr.departments d, 
hr.jobs c 
where f.department_id = d.department_id 
and f.job_id = c.job_id_id 
 
Exemplos 
 O RH precisa de um relatório sobre os funcionários e os 
seus respectivos departamentos. Crie uma consuta que 
exiba o sobrenome, o salário, o nome do departamento e 
a descrição de cargo somente para os funcionários com 
salário entre 2000 e 4000. 
 
select last_name, salary, 
department_name, job_title 
from hr.employees f, hr.departments d, 
hr.jobs c 
where f.department_id = d.department_id 
and f.job_id = c.job_id 
and salary between 2000 and 4000 
 
Exemplos 
O RH precisa de um relatório dos funcionários em 
South San Francisco . Exiba o sobrenome, o cargo, o 
nome do departamento e a cidade de todos os 
funcionários que trabalham na cidade de South San 
Francisco 
 
select f.last_name,d.department_name, 
c.job_title, l.city 
from hr.employees f, hr.departments d, 
hr.jobs c, hr.locations l 
where f.department_id = d.department_id 
and f.job_id = c.job_id 
and d.location_id = l.location_id 
and city = 'South San Francisco' 
Exemplos 
Crie uma query que exiba os nomes de cada 
um dos departamentos e a respectiva média 
salarial para os departamentos com média 
salarial maior que 3.500. 
select department_name, avg(salary) 
from hr.employees f, hr.departments d 
where 
f.department_id = d.department_id 
group by department_name 
having avg(salary) > 3500 
Exemplos 
Crie uma query que exiba os sobrenomes, os 
nomes de cada um dos departosamentos e o 
nome do país para todos os funcionários. 
select last_name, department_name, 
country_name 
from hr.employees f, hr.departments d, 
lohr.locations l, hr.countries p 
where 
f.department_id = d.department_id 
And d.location_id = l.location_id 
And l.country_id = p.country_id

Mais conteúdos dessa disciplina