On 08/05/2015 17:21, Matheus Saraiva wrote:


On 08/05/2015 17:05, Matheus de Oliveira wrote:

2015-05-08 16:51 GMT-03:00 Matheus Saraiva <[email protected] <mailto:[email protected]>>:

    /*UPDATE
            "VendasItens"
    SET
            produto_vendasitens = produto.produto_tipovendasitens,
    quantidade_vendasitens = produto.quantidade_tipovendasitens
    FROM
            unnest(f_produtos) AS produto
    WHERE
            venda_vendasitens = f_idvenda AND produto_vendasitens =
    produto.produto_tipovendasitens;
*/

    Ainda errado,
    Eu precisaria saber quais os produtos que compõe a venda que eu
    quero alterar, antes da alteração. Essa query está errada pois
    está procurando por combinação de produto + venda que não existe.


Qual atributo referencia a venda? Pela lógica do comando me parece ser "venda_vendasitens" (por estar comparando com "f_idvenda"), mas o nome do atributo me parece estranho.

Sim, venda_vendasitens referencia a venda, produto_vendasitens referencia uma tabela de produtos. f_venda é o parâmetro passado para a função Acho que talvez ei teria que passar para a função dois vetores, um contendo os ids dos produtos atuais e outro contendo os ids dos novos produtos.

Tentei passar dois vetores:

/*      UPDATE*//*
*//*         "VendasItens"*//*
*//*     SET*//*
*//* produto_vendasitens = newproduto.produto_tipovendasitens, quantidade_vendasitens = newproduto.quantidade_tipovendasitens*//*
*//*     FROM*//*
*//* unnest(f_newprodutos) AS newproduto*//*, unnest(f_produtos)*//*AS produto*//*
*//*     WHERE*//*
*//* venda_vendasitens = f_idvenda AND produto_vendasitens = produto.produto_tipovendasitens;*/

Mas também não funcionou, os vetores não são percorridos simultaneamente. Na verdade os dois unnest fazem um cartesiano:

array[1,10,11,8], array[2,4,7,100]

1|2
10|2
11|2
8|2
1|4
10|4
11|4
.
.
.
.

Acho que a saída é primeiro deletar os produtos antigos e depois inserir os novos
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a