[SP-pm] Problema para pegar o registro anterior de uma tabela
Lucas Moraes
lucastiagodemoraes at gmail.com
Thu Sep 8 07:17:44 PDT 2011
Oi gente a solução dos meus problemas era fácil, mas foi difícil encontrar,
esta ae:
my $dados = $valor->resultset('Operacao')->search(
{
ope_numero => {'<' => $numero},
'apontamento.apo_ser_id' => $id
},
{
join => 'apontamento'
}
)->get_column('ope_numero')->func('MAX');
Falou.
Em 8 de setembro de 2011 09:24, Lucas Moraes
<lucastiagodemoraes em gmail.com>escreveu:
> Gente tenho 3 tabelas "peca", "operacao" e "apontamento":
>
> CREATE TABLE peca (
> pec_id SERIAL,
> pec_cli_id INT NOT NULL,
> pec_codigo VARCHAR(30) NOT NULL,
> pec_denominacao VARCHAR(60) NULL,
> PRIMARY KEY(pec_id)
> );
>
> CREATE TABLE operacao (
> ope_id SERIAL,
> ope_pec_id INT NOT NULL,
> ope_maq_id INT NOT NULL,
> ope_numero VARCHAR(3) NOT NULL,
> ope_descricao VARCHAR(80) NOT NULL,
> ope_denominacao VARCHAR(100) NOT NULL,
> PRIMARY KEY(ope_id)
> );
>
> CREATE TABLE apontamento (
> apo_id SERIAL,
> apo_ser_id INT NOT NULL,
> apo_fun_id INT NOT NULL,
> apo_ope_id INT NOT NULL,
> apo_uni_id INT NOT NULL,
> apo_oco_id INT NOT NULL,
> apo_quantidade INT NULL,
> apo_refugada INT NULL,
> apo_data_inicial DATE NOT NULL,
> apo_data_final DATE NULL,
> apo_hora_inicial TIME NOT NULL,
> apo_hora_final TIME NULL,
> apo_status INT NOT NULL,
> apo_obs TEXT NULL,
> PRIMARY KEY(apo_id)
> );
>
> Relacionamentos
> tabela peca has_many operacao
> tebela operacao has_many apontamento
>
> a tabela peca contem o id do cliente e dados da peça
> a tabela operacao contem as operacoes para fabricar a peca e cada operacao
> contem um numero, normalmente: operacao 1: 10, operacao 2: 20, operacao 3:
> 35
> a quantidade de operacao varia de peça para peça e os numeros tambem varia
> de peça para peça.
> a tabela apontamento é como se fosse um relatório de produção de cada
> funcionario com data inicial e final, hora inicial e final e quantidade que
> produziu.
>
> agora eu vou explicar o que eu quero, cada operacao depende da operacao
> anterior para produzir, então eu gostaria de pegar pegar a quantidade
> produzida da operacao anterior para colocar de saldo na operacao que vai ser
> iniciada. Com ajuda no irc eu cheguei a esse código:
>
> return $valor->resultset('Operacao')->search(
> {
> ope_numero => {'<' => $numero},
> 'apontamento.apo_ser_id' => $id
> },
> {
> join => 'apontamento',
> rows => 1,
> group_by => 'ope_numero',
> }
> )->get_column('apontamento.apo_refugada')->sum;
>
> esse código acima funciona em partes, só funciona quando só tem uma
> operação anterior, quando tem mais de 2 operacao anterior, ele esta
> retornando a que é verdadeira.
>
> espero que tenham entendido.
>
> Obrigado.
>
>
>
>
>
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110908/6d01e75f/attachment.html>
More information about the SaoPaulo-pm
mailing list