[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