SóProvas


ID
1337275
Banca
FGV
Órgão
TJ-GO
Ano
2014
Provas
Disciplina
Banco de Dados
Assuntos

Considere um banco de dados relacional que possua as tabelas a seguir, e que em cada tabela os atributos sublinhados formem a chave primária:

PRODUTO  (idP, descricaoP)
LOJA           (idL, nomeL, endereçoL)
OFERTA     (idP, idL, preçoO)

Nesse banco de dados a tabela Oferta contém informações sobre as lojas onde cada produto é vendido e o respectivo preço, e todas as tabelas possuem pelo menos um registro. Sendo assim, o comando SQL

select p.descricaoP
from produto p
where not exists
           (select *
            from loja l
            where not exists
                      (select *
                       from oferta o
                       where o.idP=p.idP and
                                 o.idL=l.idL))

produz a lista de produtos que:

Alternativas
Comentários
  • Não entendi esta questão. Alguém poderia ajudar?

  • Por mim é  a letra  A , nenhuma das lojas vende.... Vamos de trás pra frente .

    seleciona todos os produtos e lojas que tem oferta.

    seleciona só as lojas que não tem oferta

    seleciona só os produtos  que não tem nas lojas..


    Para mim é uma lista dos produtos que não tem  nas lojas. 

  • Do fim da consulta para o início temos:

    " select * 
       from oferta o 
        where o.idP=p.idP and 
         o.idL=l.idL  "   ---->  Ofertas do produto + loja, vamos chamar de X.


    "select * 
       from loja l 
       where not exists 
       ( X ) "   ---> Lojas que não possuem ofertas do produto, vamos chamar de Y.


    "select p.descricaoP 
      from produto p 
      where not exists  

       ( Y )  ---> Produtos que não possuem lojas que não o ofertem, ou seja, produtos que são vendidos em todas as lojas.

    Resposta: B



  • NOT EXISTS ANINHADO COM NOT EXISTS => TODOS! GUARDA O BIZU!

  • NOT EXISTS + NOT EXISTS = TODOS!

    No enunciado é mencionado o "pelo menos um" aí seria EXISTS + EXISTS!