Clipper On Line • Ver Tópico - Query de roctina para ajuste de preços

Query de roctina para ajuste de preços

Discussão sobre SQL

Moderador: Moderadores

 

Query de roctina para ajuste de preços

Mensagempor alexlucc » 24 Dez 2021 10:30

Bom dia Pessoal!!

Preciso de uma ajuda.

Tenho a seguinte situação:

Duas tabelas produtos e produtos alterados no mysql

Preciso de uma Query que pegue o último preço da tabela "produtos alterados" levando em consideração a data e hora e grave no campo preço de venda
da tabela "produtos".

Segue exemplo dos registros das tabelas:

1) tabela produtos alterados

cod descricao preço dataalt hora
29 NEOPIRIDIN SPRAY MENTA 50ML NEO QUIMICA 12,99 26/11/2021 11:23:10
29 NEOPIRIDIN SPRAY MENTA 50ML NEO QUIMICA 19,99 26/11/2021 12:45:03

2) tabela produtos

cod descricao preco

29 NEOPIRIDIN SPRAY MENTA 50ML NEO QUIMICA 12,99
alexlucc
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 13 Nov 2016 18:19
Cidade/Estado: Nova Iguaçu /rj
Curtiu: 4 vezes
Mens.Curtidas: 2 vezes

Query de roctina para ajuste de preços

Mensagempor alxsts » 24 Dez 2021 23:15

Olá!

Este é um problema fácil de resolver mas, a solução pode depender de alguns fatores:
- qual banco de dados utiliza?
- qual a versão?
- qual o tipo de dado dos campos de data e hora?
- estes campos estão juntos (tipo datetime ou timestamp) ou separados?
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Query de roctina para ajuste de preços

Mensagempor alexlucc » 24 Jan 2022 13:21

Ola Alexandre,

Desculpa a demora nas respostas:

alxsts escreveu:Este é um problema fácil de resolver mas, a solução pode depender de alguns fatores:
- qual banco de dados utiliza?
- qual a versão?
- qual o tipo de dado dos campos de data e hora?
- estes campos estão juntos (tipo datetime ou timestamp) ou separados?

banco mysql versao 6.00
campos data tipo date e hora tipo char.
os campos são separados.
alexlucc
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 13 Nov 2016 18:19
Cidade/Estado: Nova Iguaçu /rj
Curtiu: 4 vezes
Mens.Curtidas: 2 vezes

Query de roctina para ajuste de preços

Mensagempor alxsts » 27 Jan 2022 02:26

Olá!

/* tabela de produtos alterados */
create or replace table tbProdAlt (
   id int auto_increment, 
   cod decimal(4) not null,
   descricao varchar(100),
   preco decimal(10,3),
   dataalt date,
   hora varchar(8),
   created_at timestamp default current_timestamp,
   primary key(id)
);

/* inserindo registros na tabela de produtos alterados */
insert into tbProdAlt (cod, descricao, preco, dataalt, hora) values
(29, 'NEOPIRIDIN SPRAY MENTA 50ML NEO QUIMICA', 12.99, '2021-11-26', '11:23:10'),
(29, 'NEOPIRIDIN SPRAY MENTA 50ML NEO QUIMICA', 19.99, '2021-11-26', '12:45:03');

/* tabela de produtos */
create or replace table tbProd (
   id int auto_increment, 
   cod decimal(4) not null,
   descricao varchar(100),
   preco decimal(10,3),
   primary key(id)
);

/* inserindo um registro tabela de produtos */
insert into tbProd (cod, descricao, preco) values
(29, 'NEOPIRIDIN SPRAY MENTA 50ML NEO QUIMICA', 12.99);

/* atualizando */
update
  tbProd as p
  inner join (
     /* se os campos de data e hora fossem juntos (datetime ou timestamp), não precisaria desta manobra de concat e cast...*/
     select cod, preco, cast( CONCAT_WS( " ", cast( dataalt as char), hora ) as datetime ) as dthora
       from tbProdAlt
       order by dthora desc limit 1
  ) as a on a.cod = p.cod
set p.preco = a.preco
where p.cod = 29;

/* verificando o resultado */
select * from tbProd;

id  cod descricao                               preco
1   29  NEOPIRIDIN SPRAY MENTA 50ML NEO QUIMICA 19.990

[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Query de roctina para ajuste de preços

Mensagempor alxsts » 27 Jan 2022 02:28

Olá

Testei no MariaDB. Se no MySQL 6 não funcionar create or replace, troque por create apenas...
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro