Você está na página 1de 6

Lista Assinantes

Exercícios de SQL (Junções)

1. Implemente as consultas abaixo considerando o modelo conceitual acima e utilizando para


realizar a junção SOMENTE os comandos INNER JOIN, LEFT OUTER JOIN ou RIGHT OUTER
JOIN.

a) Listar os nomes dos assinantes, seguido dos dados do endereço e os telefones


correspondentes.

SELECT s.nome, a.rua, a.cidade, a.estado, t.numero, t.tipo


FROM Assinante a
INNER JOIN Endereco a ON s.id = a.id_assinante
INNER JOIN Telefone t ON s.id = t.id_assinante;

b) Listar os nomes dos assinantes, seguido do seu ramo, ordenados por ramo e
posteriormente por nome.

SELECT a.nm_assinante, ra.ds_ramo


FROM Assinante a
INNER JOIN ramo_atividade ra ON a.cd_ramo = ra.cd_ramo
ORDER BY ra.ds_ramo, a.nm_assinante;

c) Listar os assinantes do município de Pelotas que são do tipo residencial.

SELECT a.nm_assinante
FROM Assinante a
INNER JOIN endereco e ON a.cd_endereco = e.cd_endereco
INNER JOIN municipio m ON e.cd_municipio = m.cd_municipio
INNER JOIN tipo_assinante ta ON a.cd_tipo = ta.cd_tipo
WHERE m.ds_municipio = 'Pelotas' AND ta.ds_tipo = 'residencial';

d) Listar os nomes dos assinantes que possuem mais de um telefone.

SELECT a.nm_assinante
FROM Assinante a
INNER JOIN assinante_telefone at ON a.cd_assinante = at.cd_assinante
GROUP BY a.cd_assinante
HAVING COUNT (at.cd_fone) > 1;
e) Listar os nomes dos assinantes seguido do número do telefone, tipo de assinante
comercial, com endereço em Natal ou João Câmara.

SELECT a.nm_assinante, t.ds_tipo, a_t.ds_tipo AS tipo_assinante, e.ds_endereco, e.bairro, e.cep, t.ddd,


t.n_fone
FROM Assinante a
INNER JOIN assinante_telefone at ON a.cd_assinante = at.cd_assinante
INNER JOIN telefone t ON at.cd_fone = t.cd_fone
INNER JOIN endereco e ON a.cd_endereco = e.cd_endereco
INNER JOIN municipio m ON e.cd_municipio = m.cd_municipio
INNER JOIN tipo_assinante a_t ON a.cd_tipo = a_t.cd_tipo
WHERE m.ds_municipio IN ('Natal', 'João Câmara') AND a_t.ds_tipo = 'comercial';
Lista Estacionamento

Exercícios de SQL – Estacionamento

1. Implemente as consultas abaixo considerando o modelo conceitual acima e utilizando para


realizar a junção SOMENTE os comandos INNER JOIN, LEFT OUTER JOIN ou RIGHT OUTER
JOIN.

a) Exiba a placa e o nome dos donos de todos os veículos.

SELECT Veiculo.placa, Cliente.nome


FROM Cliente
INNER JOIN Veiculo
ON Cliente.cpf = Veiculo.cliente_cpf;

OR

SELECT Veiculo.placa, Cliente.nome


FROM Veiculo
LEFT OUTER JOIN Cliente
ON Veiculo.cliente_cpf = Cliente.cpf;
b) Exiba o CPF e o nome do cliente que possui o veículo de placa “JJJ-2020”

SELECT Cliente.cpf, Cliente.nome


FROM Cliente
INNER JOIN Veiculo
ON Cliente.cpf = Veiculo.cliente_cpf
WHERE Veiculo.placa = 'JJJ-2020';

OR

SELECT Cliente.cpf, Cliente.nome


FROM Cliente
LEFT OUTER JOIN Veiculo
ON Cliente.cpf = Veiculo.cliente_cpf
WHERE Veiculo.placa = 'JJJ-2020';

c) Exiba a placa e a cor do veículo que possui o código de estacionamento 1.

SELECT Veiculo.placa, Veiculo.cor


FROM Veiculo
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Estaciona.cod = 1;

OR

SELECT Veiculo.placa, Veiculo.cor


FROM Veiculo
LEFT OUTER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Estaciona.cod = 1;

d) Exiba a placa e o ano do veículo que possui o código de estacionamento 1.

SELECT Veiculo.placa, Modelo.ano


FROM Veiculo
INNER JOIN Modelo
ON Veiculo.modelo_codMod = Modelo.codmod
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Estaciona.cod = 1;

e) Exiba a placa, o ano do veículo e a descrição de seu modelo, se ele possuir ano a partir de
2000.

SELECT Veiculo.placa, Modelo.ano, Modelo.desc_2


FROM Veiculo
INNER JOIN Modelo
ON Veiculo.modelo_codMod = Modelo.codmod
WHERE Modelo.ano >= 2000;
f) Exiba o endereço, a data de entrada e de saída dos estacionamentos do veículo de placa
“JEG-1010”.

SELECT Patio.ender, Estaciona.dt_entrada, Estaciona.dtsaida


FROM Veiculo
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
INNER JOIN Patio
ON Estaciona.patio_num = Patio.num
WHERE Veiculo.placa = 'JEG-1010';

OR

SELECT Patio.ender, Estaciona.dt_entrada, Estaciona.dtsaida


FROM Veiculo
LEFT OUTER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
INNER JOIN Patio
ON Estaciona.patio_num = Patio.num
WHERE Veiculo.placa = 'JEG-1010';

g) Exiba a quantidade de vezes que os veículos de cor verde estacionaram.

SELECT Veiculo.placa, COUNT (*) as qtd_estacionamentos


FROM Veiculo
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Veiculo.cor = 'verde'
GROUP BY Veiculo.placa;

h) Liste todos os clientes que possuem carro de modelo 1.

SELECT Cliente.cpf, Cliente.nome


FROM Cliente
INNER JOIN Veiculo
ON Cliente.cpf = Veiculo.cliente_cpf
INNER JOIN Modelo
ON Veiculo.modelo_codMod = Modelo.codmod
WHERE Modelo.codmod = 1;

i) Liste as placas, os horários de entrada e saída dos veículos de cor verde.

SELECT Veiculo.placa, Estaciona.hsentrad, Estaciona.hsSaida


FROM Veiculo
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Veiculo.cor = 'verde';
j) Liste todos os estacionamentos do veículo de placa “JJJ-2020”

SELECT Veiculo.placa, Estaciona.dt_entrada, Estaciona.dtsaida


FROM Veiculo
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Veiculo.placa = 'JJJ-2020';

k) Exiba o nome do cliente que possui o veículo cujo código do estacionamento é 2.

SELECT Cliente.nome
FROM Cliente
INNER JOIN Veiculo
ON Cliente.cpf = Veiculo.cliente_cpf
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Estaciona.cod = 2;

l) Exiba o CPF do cliente que possui o veículo cujo código do estacionamento é 3.

SELECT Cliente.cpf
FROM Cliente
INNER JOIN Veiculo
ON Cliente.cpf = Veiculo.cliente_cpf
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Estaciona.cod = 3;

m) Exiba a descrição do modelo do veículo cujo código do estacionamento é 2.

SELECT Modelo.desc_2
FROM Modelo
INNER JOIN Veiculo
ON Modelo.codmod = Veiculo.modelo_codMod
INNER JOIN Estaciona
ON Veiculo.placa = Estaciona.veiculo_placa
WHERE Estaciona.cod = 2;

n) Exiba a placa, o nome, dos donos e a descrição dos os modelos de todos os veículos.

SELECT Veiculo.placa, Cliente.nome, Modelo.desc_2


FROM Cliente
INNER JOIN Veiculo
ON Cliente.cpf = Veiculo.cliente_cpf
INNER JOIN Modelo
ON Veiculo.modelo_codMod = Modelo.codmod;

Você também pode gostar