-
Essa questão está comentada em vídeo na prática e passo a passo no youtube no canal do Qcom - Questão comentada
https://youtu.be/1TgE_GGqedY
Basta selecionar os maiores ou iguais a 3 e maiores ou iguais a 4
-
É quase uma questão de RML.
P = codProduto<3
Q = valor<4000
¬(P ou Q) = ¬P e ¬Q = codProduto>=3 e valor>=4000
-
d-
____________________________________________________
1- sempre se inicia da subquery:
(select codProduto from Produtos where codProduto<3 or valor<4000)
o que ele quer é codProduto menor que 3. codProduto pode ser 0,1,2 etc.
ou.
valor menor que 4000. pode ser 3999,2000,1000 etc.
____________________________________________________
2- o NOT IN nega tudo dentro da subquery. logo:
or -> and
codProduto < 3 -> codProduto >= 3
valor<4000 -> valor>=4000
-
Achei a semântica estranha. Na descrição o valor é referente ao Produto e nas alternativas referente à Compra, sendo que a compra poderia ter um valor diferente se tiver mais de um produto. Então as queries não teriam o mesmo resultado.
-
A questão cobra o entendimento do operador IN/NOT IN. O NOT IN retorna verdadeiro para todos aqueles valores do atributo à esquerda do comando que não estão presentes na lista de valores entre parênteses. No item em tela, os valores dessa lista entre parênteses são dados por outra consulta, a seguinte:
select codProduto from Produtos where codProduto<3 or valor<4000
Essa consulta retorna todos os valores de codProduto para os quais o codProduto é < 3 ou o valor do produto é < 4000.
Então, a consulta principal irá retornar todos os valores de codProduto que não estão nessa lista, já que é um NOT IN. Ou seja, todos os valores de CodProduto, cujo atributo codProduto não é menor que três (ou seja que é >= 3) e cujo atributo valor não é menor que 4000 (ou seja, que é >= 4000). O comando equivalente, entã, é o seguinte:
SELECT * FROM Compras where codProduto>=3 and valor>=4000
-
SELECT * FROM Compras where codProduto not in (select codProduto from Produtos where codProduto<3 or valor<4000
Não são as mesmas tabelas. Cade o join?