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
Moderador: Moderadores
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Query de roctina para ajuste de preços
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?
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)
Alexandre Santos (AlxSts)
-
alexlucc
- Usuário Nível 1

- Mensagens: 49
- Registrado em: 13 Nov 2016 19:19
- Localização: Nova Iguaçu /rj
Query de roctina para ajuste de preços
Ola Alexandre,
Desculpa a demora nas respostas:
campos data tipo date e hora tipo char.
os campos são separados.
Desculpa a demora nas respostas:
banco mysql versao 6.00alxsts 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?
campos data tipo date e hora tipo char.
os campos são separados.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Query de roctina para ajuste de preços
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
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Query de roctina para ajuste de preços
Olá
Testei no MariaDB. Se no MySQL 6 não funcionar create or replace, troque por create apenas...
Testei no MariaDB. Se no MySQL 6 não funcionar create or replace, troque por create apenas...
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)