3
respostas

[Dúvida] alterei somente os valores que estão fora dos limites porém um de cada vez teria algum jeito de fazer de uma ve só

boa noite, gostaria de tirar uma duvida

eu alterei somente os valores que estavam fora do minimo e do maximo mais tive que fazer com varias consultas uma de cada vez conforme abaxio

--select preco, max(preco) from produtos where nome_produto == 'Bola de Futebol'
--select preco, min(preco) from produtos where nome_produto == 'Bola de Futebol'
--select * from produtos where nome_produto == 'Bola de Futebol' and preco BETWEEN 100 and 1996.65
--update produtos set preco == 40 where nome_produto == 'Bola de Futebol' and preco BETWEEN 100 and 1996.65;
--update produtos set preco == 40 where nome_produto == 'Bola de Futebol' and preco BETWEEN 10.80 and 19;
--select * from produtos where nome_produto == 'Bola de Futebol'
--select * from produtos where nome_produto == 'Chocolate' and preco BETWEEN '50' and '1999.65'
--update produtos set preco == 30 where nome_produto == 'Chocolate' and preco BETWEEN '50' and '1999.65';
--select preco, max(preco) from produtos where nome_produto =='Chocolate'
--select * from produtos where nome_produto == 'Chocolate'

--select preco, min(preco) from produtos where nome_produto == 'Celular'
--select preco, max(preco) from produtos where nome_produto == 'Celular'
--select * from produtos where nome_produto == 'Celular' and preco BETWEEN 1 and 79;
--UPDATE produtos set preco == 2540 where nome_produto =='Celular' and preco BETWEEN 1 and 79;
--SELECT * from produtos where nome_produto == 'Celular'
--select preco, max(preco) from produtos where nome_produto =='Livro de Ficção'
--select preco, min(preco) from produtos where nome_produto =='Livro de Ficção'
--update produtos set preco == 105 where nome_produto == 'Livro de Ficção' and preco BETWEEN 201 and 1999.18;
--select * from produtos where nome_produto == 'Livro de Ficção'
--SELECT preco, min(preco) from produtos WHERE nome_produto =='Camisa';
--SELECT preco, max(preco) from produtos WHERE nome_produto =='Camisa';
--update produtos set preco == 180 WHERE nome_produto == 'Camisa' and preco BETWEEN 10.34 and 79;
--update produtos set preco == 180 WHERE nome_produto == 'Camisa' and preco BETWEEN 201 and 1998.78;

Teria algum jeito de fazer de uma vez para só alterar os valores que estão foras dos limites ?

Att.

Felipe Bazan

3 respostas

Oii, Felipe! Tudo bem?

A estrutura das consultas estão excelentes, focando em alterar os preços dentro dos limites definidos. Uma dica é usar uma única consulta UPDATE combinada com a função CASE.

UPDATE produtos
SET preco = CASE
    WHEN preco < 100 THEN 40
    WHEN preco > 1996.65 THEN 2540
    ELSE preco
END
WHERE nome_produto IN ('Bola de Futebol', 'Chocolate', 'Celular', 'Livro de Ficção', 'Camisa');

Traduzindo: o código verifica se o preço está fora dos limites estabelecidos e faz a alteração de uma só vez, sem a necessidade de várias consultas separadas.

Espero ter ajudado, conte sempre conosco aqui no fórum.

Até mais!

Boa tarde Nathalia, tudo bem ?

Então mais como os valores que estão no limites são diferentes por exemplo

o limite da Bola de Futebol é diferente do limite do Celular,

Mesmo assim daria certo ?

Att.

Felipe Bazan.

Oii, Felipe! Tudo bem?

Sim, o CASE, por exemplo, permite que você defina limites específicos para cada produto.

Bons estudos, Felipe!