O seguinte comando SQL foi executado em uma típica ferramenta de acesso a banco de dados relacional Oracle. SELECT C.CDCLIENTE, C.NOME_CLIENTE, P.CDPEDIDO, P.VLPEDIDO, P.DT_EMISSAO FROM CLIENTE C, PEDIDO_VENDA P WHERE C.CDCLIENTE = 18; Qual será a resposta do SGBDR para a instrução executada acima?

Questão

O seguinte comando SQL foi executado em uma típica ferramenta de acesso a banco de dados relacional Oracle.

SELECT C.CDCLIENTE, C.NOME_CLIENTE, P.CDPEDIDO, P.VLPEDIDO, P.DT_EMISSAO FROM CLIENTE C, PEDIDO_VENDA P WHERE C.CDCLIENTE = 18;

Qual será a resposta do SGBDR para a instrução executada acima?

Alternativas

A) Irá fazer o produto cartesiano, ou seja, irá trazer os dados do cliente 18 e relacioná-lo com todos os pedidos existentes, porém, o cliente 18 irá somente trazer os dados de seus respectivos pedidos.

B) Irá fazer o produto cartesiano, ou seja, irá trazer todos os pedidos do cliente 18, bem como os pedidos de todos os outros clientes. Assim sendo, todos os clientes e todos os pedidos irão ser selecionados nessa consulta, independente da cláusula where.

C) Irá fazer o produto cartesiano, ou seja, irá trazer os dados do cliente 18 e relacioná-lo com todos os pedidos existentes, independente se o cliente já tenha feito o pedido ou não.

96%

D) Irá fazer a junção normal (natural join), selecionado o cliente 18 e seus respectivos pedidos. Os pedidos de outros clientes não serão selecionados nessa consulta.

E) Irá exibir todos os clientes e seus respectivos pedidos para todos os clientes que tenham o código 18.

Explicação

Na consulta:

SELECT C.CDCLIENTE, C.NOME_CLIENTE, P.CDPEDIDO, P.VLPEDIDO, P.DT_EMISSAO
FROM CLIENTE C, PEDIDO_VENDA P
WHERE C.CDCLIENTE = 18;
  1. A cláusula FROM CLIENTE C, PEDIDO_VENDA P (com vírgula) representa um produto cartesiano entre as tabelas, isto é, combina cada linha de CLIENTE com cada linha de PEDIDO_VENDA, a menos que exista uma condição de junção (join) restringindo essa combinação.

  2. A cláusula WHERE C.CDCLIENTE = 18 não relaciona CLIENTE com PEDIDO_VENDA; ela apenas filtra a tabela CLIENTE para manter somente o(s) registro(s) do cliente de código 18.

  3. Como não existe condição do tipo C.CDCLIENTE = P.CDCLIENTE (ou equivalente) no WHERE, o resultado final será:

  • todas as linhas do cliente 18 (normalmente 1 linha) combinadas com todas as linhas de PEDIDO_VENDA.

Ou seja, serão mostrados pedidos de todos os clientes, mas “anexados” ao cliente 18, independentemente de o pedido ser realmente dele.

Alternativa correta: (C).

Questões relacionadas

Ver últimas questões

Comece a estudar de forma inteligente hoje mesmo

Resolva questões de concursos e vestibulares com IA, gere simulados personalizados e domine os conteúdos que mais caem nas provas.

Cancele quando quiser.