As tabelas a seguir compõem um banco de dados simplificado ...
As tabelas a seguir compõem um banco de dados simplificado de um banco comercial, onde o campo sublinhado indica a chave primária. É possível que uma conta tenha vários clientes, e que um cliente tenha várias contas.
Cliente(idCliente,nomeCliente)
Conta(idConta,ultimoSaldo)
ContaCliente(idConta,idCliente)
Que comando SQL lista todos os nomes de clientes com mais de R$ 2.000,00 na conta?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C. Para resolver essa questão, é necessário compreender os conceitos de junção de tabelas (JOIN) em SQL e saber como aplicar condições de filtragem de dados com a cláusula WHERE. O objetivo do comando SQL é listar todos os clientes com saldo superior a R$2.000,00 nas suas contas, considerando que um cliente pode ter várias contas e uma conta pode pertencer a vários clientes.
A resposta correta utiliza a sintaxe de junções implícitas, cruzando as tabelas Cliente, ContaCliente e Conta através das chaves estrangeiras e primárias correspondentes. O filtro do saldo é aplicado corretamente com a condição ultimoSaldo > 2000
.
O comando correto e formatado é:
SELECT nomeCliente FROM Cliente c, ContaCliente cc, Conta cs WHERE c.idCliente = cc.idCliente AND cc.idConta = cs.idConta AND cs.ultimoSaldo > 2000;
Neste comando, é dada a junção das tabelas através dos identificadores dos clientes (c.idCliente = cc.idCliente
) e das contas (cc.idConta = cs.idConta
), garantindo que os dados selecionados sejam da mesma entidade em todas as tabelas. A cláusula WHERE filtra os resultados para incluir somente aqueles clientes cujos saldos em suas respectivas contas são maiores que R$2.000,00.
As demais alternativas são incorretas porque apresentam erros na sintaxe ou na forma de realizar a junção entre as tabelas, como a falta de alias apropriados, uso inadequado do INNER JOIN ou condições de junção malformadas.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GABARITO:
(C) SELECT nomeCliente FROM Cliente c, ContaCliente
cc, Conta cs WHERE c.idCliente=cc.idCliente AND
cc.idConta=cs.idConta AND cs.ultimoSaldo > 2000;
Força, não desista!
No caso... Não se usa INNER JOIN assim ?
Galera, a sintaxe do join é
JOIN [tabela referenciada] ON [condição para a associação]
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo