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

[Projeto] Possivel resolucao

1 - Fiz uma visualizacao para os produtos que nao se encaixam na faixa de preco aceitavel

SELECT * from produtos
where nome_produto = 'Bola de Futebol' and preco not BETWEEN 20 aND 100;

SELECT * from produtos
where nome_produto = 'Chocolate' and preco not BETWEEN 10 aND 50;

SELECT * from produtos
where nome_produto = 'Celular' and preco not BETWEEN 80 aND 5000;

SELECT * from produtos
where nome_produto = 'Livro de Ficção' and preco not BETWEEN 10 aND 200;

SELECT * from produtos
where nome_produto = 'Camisa' and preco not BETWEEN 80 aND 200;

2 - Optei por atualizar os precos desses produtos para uma media do preco dos produtos que se encaixam na afixa de preco aceitavel. Fiz para o primeiro e repliquei para os outros.

select Round(avg(preco),2) from produtos
where nome_produto = 'Bola de Futebol' and preco BETWEEN 20 aND 100;

3 - Fiz o update utilizando um case dentro de uma transaction para que, caso houvessem erros, eu pudesse usar um rollback e voltar os dados para seu estado original.

BEGIN TRANSACTION;
UPDATE produtos
set preco = CASE
  when nome_produto = 'Bola de Futebol' then 
  (SELECT Round(avg(preco),2) from produtos where nome_produto = 'Bola de Futebol' and preco BETWEEN 20 aND 100)
  when nome_produto = 'Chocolate' then 
  (SELECT Round(avg(preco),2) from produtos where nome_produto = 'Chocolate' and preco BETWEEN 10 aND 50)
  when nome_produto = 'Celular' then
  (SELECT Round(avg(preco),2) from produtos where nome_produto = 'Celular' and preco BETWEEN 80 aND 5000)
  when nome_produto = 'Livro de Ficção' then
  (SELECT Round(avg(preco),2) from produtos where nome_produto = 'Livro de Ficção' and preco BETWEEN 10 aND 200)
  when nome_produto = 'Camisa' then
  (SELECT Round(avg(preco),2) from produtos where nome_produto = 'Camisa' and preco BETWEEN 80 aND 200)
  else preco
end;

COMMIT;
1 resposta
solução!

E aí, Pedro! Como vai?

Muito bem, a sua solução está ótima! A sua decisão por usar um rollback demonstra que você cria no presente, mas pensa em cenários futuros, isso é excelente para garantir a boa manutenção e segurança do código. É ótimo acompanhar toda sua evolução até aqui, permaneça compartilhando o seu progresso com a comunidade Alura!

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

A documentação está em inglês, mas é possível compreendê-la usando o recurso de tradução de páginas do próprio navegador.

Se precisar, fico à disposição! Conte com o apoio do fórum.

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!