SóProvas


ID
2677456
Banca
CESGRANRIO
Órgão
Banco do Brasil
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

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?

Alternativas
Comentários
  • A CESGRANRIO frequentemente cobra esse tipo de questão, em que o usuário precisa utilizar campos de duas tabelas conectadas através de uma tabela de ligação. No caso, são as tabelas Conta e Cliente, que são associadas através da tabela ContaCliente. Assim, para realizar a consulta, é necessário fazer a junção entre Cliente, ContaCliente e Conta. Tendo isso em mente, vamos avaliar as alternativas e apresentar seus erros:

    a) Essa consulta produz um erro, pois há campos de mesmo nome entre as tabelas, então precisamos definir um "alias" ou apelido para cada uma delas. Se não fizermos isso, o SGBD não vai saber a qual tabela pertencem os atributos "idCliente" ou "idConta", por exemplo.

    b) Erro de sintaxe, não existe esse TABLES.

    c) Correta! É a nossa resposta.

    d) Erro de sintaxe, a alternativa mistura as duas sintaxes possíveis para a junção interna.

    e) Erro de sintaxe, falta a cláusula ON nas junções.

  • 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;

  • Nossa luta não será em vão! Boa sorte a todos!