Em 19/12/08, Emerson Casas Salvador<[email protected]> escreveu: > e que tal usar tabela filha... > > uma tabela de pedidos e uma tabela para os itens do pedido > > 2008/12/19 Juliano <[email protected]>: >> Suponhamos a tabela pedidos criada da seguinte forma: >> >> >> CREATE TABLE pedidos( >> num_pedido int serial primary key, >> produto varchar(15)[3], >> preco numeric[3], >> quantidade int[3] >> ); >> >> São 3 arrays... >> >> Gostaria de fazer algo que simplificasse o total de cada linha >> (preco*quantidade). >> >> A única maneira que consegui foi: >> >> SELECT >> (preco[1]*quantidade[1] + preco[2]*quantidade[2] + preco[3]*quantidade[3]) >> AS Total FROM pedidos; >> >> Será que tem um meio mais fácil? Com um array de tamanho 3 até vai... mas >> imaginem isso pra quantidades maiores... >>
Como o Emerson já aconselhou: uma normalização resolveria facilmente seu problema e deixaria seu banco mais elegante. Uma possível solução, caso queira continuar usando array, seria: SELECT num_pedido, sum(preco[i]*quantidade[i]) FROM (SELECT generate_series(array_lower(produto,1),array_upper(produto,1)) FROM pedidos) AS s(i), pedidos GROUP BY num_pedido; Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
