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