Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Desafio com resultado Nulo

Olá, optei por um resultado nulo para tratar futuramente com o cliente qual a melhor tratativa.

Identificando os preços diferentes com 2 tipos de buscas:

-- Busca unitária!

SELECT nome_produto, preco 
FROM produtos 
WHERE nome_produto = 'Bola de Futebol' 
    and preco not BETWEEN 20 and 100;
    


```-- Busca com case

SELECT id_produto, nome_produto, 
       CASE 
           WHEN nome_produto = 'Bola de Futebol' AND preco NOT BETWEEN 20 AND 100 THEN NULL 
           WHEN nome_produto = 'Chocolate' and preco not BETWEEN 10 and 50 THEN NULL 
           WHEN nome_produto = 'Celular' and preco not BETWEEN 80 and 5000 THEN NULL 
           WHEN nome_produto = 'Livro de Ficção' and preco not BETWEEN 10 and 200 THEN NULL 
           WHEN nome_produto = 'Camisa' and preco not BETWEEN 80 and 200 THEN NULL 
       END as preco
FROM produtos;

Alterando os preços diferentes para "NULL"!

BEGIN TRANSACTION;
-- Altera somente uma categoria para NULL

UPDATE produtos
SET preco = NULL
WHERE nome_produto = 'Bola de Futebol'
  AND preco NOT BETWEEN 20 AND 100;
    
ROLLBACk;

BEGIN TRANSACTION;
-- Altera várias categorias para NULL

UPDATE produtos
SET preco = 
  CASE 
    WHEN nome_produto = 'Bola de Futebol' AND preco NOT BETWEEN 20 AND 100 THEN NULL
    WHEN nome_produto = 'Chocolate' and preco not BETWEEN 10 and 50 THEN NULL 
    WHEN nome_produto = 'Celular' and preco not BETWEEN 80 and 5000 THEN NULL 
    WHEN nome_produto = 'Livro de Ficção' and preco not BETWEEN 10 and 200 THEN NULL 
    WHEN nome_produto = 'Camisa' and preco not BETWEEN 80 and 200 THEN NULL 
    ELSE preco 
  END;

ROLLBACk;
1 resposta
solução!

Oi, Samuel! Como vai?

Obrigado por compartilhar seu código com a comunidade Alura. A sua abordagem está correta para identificar e alterar os preços fora do intervalo, mas é importante lembrar que o uso de ROLLBACK irá desfazer as alterações feitas na transação. Se a intenção é realmente aplicar essas mudanças, você precisará usar COMMIT no lugar de ROLLBACK. Ao usar COMMIT, as alterações serão salvas no banco de dados. Caso ainda esteja em fase de testes e queira apenas visualizar as mudanças sem aplicá-las, continue usando ROLLBACK. Para se aprofundar mais nesse tema, indico esta leitura;.

Conte com o apoio do Fórum na sua jornada.

Abraços e bons estudos!