2015-01-08 10:16 GMT-02:00 Sebastian Webber <sebastian...@gmail.com>:
> 2015-01-08 8:28 GMT-02:00 Matheus de Oliveira <matioli.math...@gmail.com>: > >> Nossa cara, desculpe, mas por favor não faça isso. Criar uma "sequence" >> (mesmo temporária) para ter algo que uma simples WINDOW FUNCTION row_number >> (o mesmo do seu "alias") já faz, me parece péssimo, além disso para array o >> generate_subscripts já resolve, você viu a solução que eu propus? >> > > Vi agora. =\ > > Todo caso a idéia de propor a solução ruim era forçar alguma alma caridosa > a pensar em algo melhor. :P > > Eu já pensei em algo, dá uma olhada: CREATE OR REPLACE FUNCTION fordena_sql(int[]) RETURNS TABLE (item int, ordem int) AS $$ SELECT unnest($1) as item, generate_series(1,array_length($1,1)) as ordem ; $$ LANGUAGE 'sql'; SELECT foo.id, foo.name, fordena_sql.ordem FROM foo, fordena_sql(ARRAY[1,5,20,12]) WHERE foo.id = fordena_sql.item ORDER BY fordena_sql.ordem; e o resultado: postgres=# SELECT foo.id, foo.name, fordena_sql.ordem FROM foo, fordena_sql(ARRAY[1,5,20,12]) postgres-# WHERE foo.id = fordena_sql.item ORDER BY fordena_sql.ordem;WHERE foo.id = fordena_sql.item postgres-# ORDER BY fordena_sql.ordem;ORDER BY fordena_sql.ordem; id | name | ordem ----+---------+------- 1 | name 1 | 1 5 | name 5 | 2 20 | name 20 | 3 12 | name 12 | 4 (4 rows) a parte legal é agora nem precisa de pl/pgsql! :D -- Sebastian Webber http://swebber.me
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral