From: | "Julio Cesar Rodriguez Dominguez" <jurasec(at)gmail(dot)com> |
---|---|
To: | "Jaime Casanova" <jcasanov(at)systemguards(dot)com(dot)ec> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Duda con subconsultas y serial |
Date: | 2008-12-24 14:50:48 |
Message-ID: | 925902880812240650j10026cc2j30b681628877ce8e@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2008/12/23 Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
> On Tue, Dec 23, 2008 at 8:29 PM, Julio Cesar Rodriguez Dominguez >
> >
> > postgres(at)contable[localhost]=# begin; create sequence s; select * from
> > (select nextval('s') as offset,idgrupo,grupo from (select idgrupo,grupo
> from
> > cc_grupos order by grupo) x ) xx where idgrupo=5;rollback;
> >
>
> postgres esta empujando los select internos hacia afuera, convirtiendo
> esto:
>
> select * from (select nextval('s') as offset,idgrupo,grupo
> from (select idgrupo,grupo
> from cc_grupos order by grupo) x ) xx
> where idgrupo=5
>
>
> en esto:
>
> select nextval('s') as offset,idgrupo,grupo
> from (select idgrupo,grupo from cc_grupos order by grupo) x
> where idgrupo=5
>
>
> si en cambio los escribes asi, hace lo que quieres:
>
> select * from (select nextval('s') as offset,idgrupo,grupo
> from (select idgrupo,grupo from cc_grupos
> order by grupo) x
> offset 0 ) xx
> where idgrupo=5;
>
Gracias Jaime, esto funciona muy bien.
>
> o mejor aun:
>
> select * from (select nextval('s') as offset, idgrupo, grupo
> from cc_grupos offset 0) as foo
> where idgrupo = 5
>
Esto no, ya que necesito que primero esten ordenados los registros y luego
aplicar el consecutivo, y con esto, aplica el serial y luego los ordena,
quedando el serial de manera de manera desordenada, (inserte un registro mas
, ya que con los datos anteriores, si salia el mismo resultado)
idgrupo | grupo
---------+---------------
7 | AAA
1 | ABCD
5 | BACILADORAS
3 | DENOMINACION
4 | LAS PAGADORAS
(5 filas)
ordenados;
offset | idgrupo | grupo
--------+---------+---------------
1 | 7 | AAA
2 | 1 | ABCD
3 | 5 | BACILADORAS
4 | 3 | DENOMINACION
5 | 4 | LAS PAGADORAS
(5 filas)
resultado queda con offset igual a 2, cuando deberia de ser 3:
postgres(at)contable[localhost]=# begin;create sequence s;select * from (select
nextval('s') as offset,idgrupo
,grupo from cc_grupos offset 0) as foo where idgrupo = 5;rollback;
BEGIN
CREATE SEQUENCE
offset | idgrupo | grupo
--------+---------+-------------
2 | 5 | BACILADORAS
(1 fila)
ROLLBACK
Bueno, pero solo me queda la duda, ¿Se considera normal que Postgresql
empuje los select's internos hacia afuera?
> --
> Atentamente,
> Jaime Casanova
> Soporte y capacitación de PostgreSQL
> Asesoría y desarrollo de sistemas
> Guayaquil - Ecuador
> Cel. +59387171157
>
--
:: God bless you, every day and every night ::
From | Date | Subject | |
---|---|---|---|
Next Message | Maseguri5 | 2008-12-24 14:53:19 | Re: Error en servicio |
Previous Message | Maseguri5 | 2008-12-24 09:26:19 | Error en servicio |