Questão FC369489
Para que a consulta a seguir reflita o resultado dos clientes cadastrados que não contrataram empréstimos, qual a opção que corretamente substitui o trecho na cláusula from do coma
Linguagem SQL
FGV · 2024
Seja um banco de dados relacional especificado em SQL de uma empresa de correspondência entre clientes, instituições financeiras e empréstimos contratados por esses clientes nessas instituições, previamente implementado em um banco de dados como a seguir:
create table tb_cliente
(
id_cliente integer primary key,
num_cpf char(11) unique,
nome varchar(50) not null,
email varchar(20),
telefone varchar(20),
endereco varchar(100),
cidade varchar(20),
estado char(2)
);
create table tb_financeira
(
id_financeira integer primary key,
razao_social varchar(30) not null,
cidade varchar(30) not null,
estado char(2) not null
);
create table tb_emprestimo
(
id_financeira integer references tb_financeira,
id_cliente integer references tb_cliente,
valor real not null check(valor > 0),
dia integer not null check(dia >= 1 and dia <= 31),
mes integer not null check(mes >= 1 and mes <= 12),
ano integer not null check(ano >= 1980 and ano <= 2100),
primary key(id_financeira, id_cliente, dia, mes, ano)
);
OBS: Neste banco de dados, cadeias de caracteres (strings) são representadas envoltas em aspas simples.
Para que a consulta a seguir reflita o resultado dos clientes cadastrados que não contrataram empréstimos, qual a opção que corretamente substitui o trecho na cláusula from do comando SQL, padrão ANSI, destacado como /* TERMO */ ?
select c.nome
from tb_emprestimo e /* TERMO */ join tb_cliente c
on c.id_cliente = e.id_cliente
where e.id_financeira is null
- inner
- left
- natural
- outer
- right
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
O uso de RIGHT JOIN é adequado porque garante que todas as linhas da tb_cliente (tabela à direita) sejam preservadas, mesmo quando não há correspondência na tabela tb_emprestimo.
Na cláusula completa: from tb_emprestimo e right join tb_cliente c on c.id_cliente = e.id_cliente, as colunas de e ficam com valor NULL para clientes que não possuam empréstimos associados.
Ao aplicar o filtro where e.id_financeira is null, a consulta passa a retornar exclusivamente esses clientes sem empréstimos, pois apenas os registros não casados apresentam e.id_financeira igual a NULL.
Portanto, RIGHT JOIN combinado com a checagem de NULL na tabela de empréstimos identifica corretamente os clientes que não contrataram empréstimos.
Conteúdo do catálogo FC Concursos · Atualizado em