Página 1 de 1
Query de roctina para ajuste de preços
Enviado: 24 Dez 2021 10:30
por alexlucc
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
Query de roctina para ajuste de preços
Enviado: 24 Dez 2021 23:15
por alxsts
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?
Query de roctina para ajuste de preços
Enviado: 24 Jan 2022 13:21
por alexlucc
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.
Query de roctina para ajuste de preços
Enviado: 27 Jan 2022 02:26
por alxsts
Olá!
Código: Selecionar todos
/* 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
Query de roctina para ajuste de preços
Enviado: 27 Jan 2022 02:28
por alxsts
Olá
Testei no MariaDB. Se no MySQL 6 não funcionar create or replace, troque por create apenas...