Re: numrow

Lists: pgsql-es-ayuda
From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: numrow
Date: 2006-11-26 18:46:22
Message-ID: 200611261946.22955.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Saludos al foro.

Existe ago como el numrow (creo) de Oracle, para numerar las lineas
resultantes en un SELECT?

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-27 13:58:07
Message-ID: 9c58769313017de87d84a9b1d65974ce@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


On Sun, 26 Nov 2006 19:46:22 +0100, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com> wrote:
> Saludos al foro.
>
> Existe ago como el numrow (creo) de Oracle, para numerar las lineas
> resultantes en un SELECT?

Podes dar un ejemplo de como lo hace Oracle?

--
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------


From: Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe>
To: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
Cc: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re[2]: numrow
Date: 2006-11-27 14:03:26
Message-ID: 418527896.20061127090326@sedapal.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


============
Con fecha Lunes, 27 de Noviembre de 2006, 08:58:07 a.m., escribió:

> On Sun, 26 Nov 2006 19:46:22 +0100, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com> wrote:
>> Saludos al foro.
>>
>> Existe ago como el numrow (creo) de Oracle, para numerar las lineas
>> resultantes en un SELECT?

> Podes dar un ejemplo de como lo hace Oracle?

select rownum,* from tablaXYZ;

rownum enumera los registros recuperados....

> --
> ---------------------------------------------------------
> Lic. Martín Marqués | SELECT 'mmarques' ||
> Centro de Telemática | '@' || 'unl.edu.ar';
> Universidad Nacional | DBA, Programador,
> del Litoral | Administrador
> ---------------------------------------------------------

> ---------------------------(fin del
> mensaje)---------------------------
> TIP 2: puedes desuscribirte de todas las listas simult?neamente
> (env?e "unregister TuDirecci?nDeCorreo" a majordomo(at)postgresql(dot)org)


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-27 14:15:29
Message-ID: 20061127141529.GA4432@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor Lopez escribió:

> Existe ago como el numrow (creo) de Oracle, para numerar las lineas
> resultantes en un SELECT?

Tiene mucho mas sentido que lo hagas en la aplicacion cliente, no?

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


From: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: Miguel Bernilla Sanchez <mbernilla(at)sedapal(dot)com(dot)pe>
Cc: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Re[2]: numrow
Date: 2006-11-27 14:15:59
Message-ID: 52252cec32fda890ae49ecad34992666@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


On Mon, 27 Nov 2006 09:03:26 -0500, Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe> wrote:
>
> ============
> Con fecha Lunes, 27 de Noviembre de 2006, 08:58:07 a.m., escribió:
>
>> On Sun, 26 Nov 2006 19:46:22 +0100, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
> wrote:
>>> Saludos al foro.
>>>
>>> Existe ago como el numrow (creo) de Oracle, para numerar las lineas
>>> resultantes en un SELECT?
>
>> Podes dar un ejemplo de como lo hace Oracle?
>
> select rownum,* from tablaXYZ;
>
> rownum enumera los registros recuperados....

CREATE TEMP SEQUENCE enumeracion;
SELECT nextval('enumeracion'),* FROM tablaXYZ

>>> Saludos al foro.
>>>
>>> Existe ago como el numrow (creo) de Oracle, para numerar las lineas
>>> resultantes en un SELECT?
>
>> Podes dar un ejemplo de como lo hace Oracle?
>
> select rownum,* from tablaXYZ;
>
> rownum enumera los registros recuperados....

CREATE TEMP SEQUENCE enumeracion;
SELECT nextval('enumeracion'),* FROM tablaXYZ

--
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-27 17:21:13
Message-ID: 200611271821.13720.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

> CREATE TEMP SEQUENCE enumeracion;
> SELECT nextval('enumeracion'),* FROM tablaXYZ

Tan complicado?

Lo intentaré ... zanks

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-27 17:42:40
Message-ID: 200611271842.40117.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El Lunes, 27 de Noviembre de 2006 15:15, MM nos dijo ...:
> CREATE TEMP SEQUENCE enumeracion;

http://www.postgresql.org/docs/8.1/static/sql-createsequence.html

minvalue ... The defaults are 1 ... for ascending

nextval sería 1 o minvalue + 1 => 2
--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-27 17:54:40
Message-ID: 200611271854.40875.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El Lunes, 27 de Noviembre de 2006 15:15, AH nos dijo ...:
> Victor Lopez escribió:
>
> > Existe ago como el numrow (creo) de Oracle, para numerar las lineas
> > resultantes en un SELECT?
>
> Tiene mucho mas sentido que lo hagas en la aplicacion cliente, no?
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>
CREATE TEMP SEQUENCE enum;
SELECT (posicion / items_por_pagina_de_buscador) -1 AS pagina
FROM (SELECT nextval(enum) AS posicion, ID
FROM textos
ORDER BY titulo) AS t
WHERE t.ID = ID_buscado

o algo parecido, es mas rápido en el servidor ... no?

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-27 18:18:30
Message-ID: 20061127181830.GD9324@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor Lopez escribió:
> El Lunes, 27 de Noviembre de 2006 15:15, AH nos dijo ...:
> > Victor Lopez escribió:
> >
> > > Existe ago como el numrow (creo) de Oracle, para numerar las lineas
> > > resultantes en un SELECT?
> >
> > Tiene mucho mas sentido que lo hagas en la aplicacion cliente, no?
>
> CREATE TEMP SEQUENCE enum;
> SELECT (posicion / items_por_pagina_de_buscador) -1 AS pagina
> FROM (SELECT nextval(enum) AS posicion, ID
> FROM textos
> ORDER BY titulo) AS t
> WHERE t.ID = ID_buscado
>
> o algo parecido, es mas rápido en el servidor ... no?

Personalmente, me parece demasiado trabajo para algo que, en el lado del
cliente, es absolutamente trivial.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


From: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-28 13:50:05
Message-ID: 1a2a80bf5c3863613d4473b8d44bbefc@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


On Mon, 27 Nov 2006 18:42:40 +0100, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com> wrote:
> El Lunes, 27 de Noviembre de 2006 15:15, MM nos dijo ...:
>> CREATE TEMP SEQUENCE enumeracion;
>
> http://www.postgresql.org/docs/8.1/static/sql-createsequence.html
>
> minvalue ... The defaults are 1 ... for ascending
>
> nextval sería 1 o minvalue + 1 => 2

Primero deberias ver las funciones relacionadas con secuencias:

http://www.postgresql.org/docs/8.1/interactive/functions-sequence.html

Despues deberias probar que da el nextval, y recien ahi, si aun te
quedan dudas, preguntar. Asi se aprende mejor.

prueba=> CREATE TEMP SEQUENCE enumeracion;
CREATE SEQUENCE
prueba=> SELECT nextval('enumeracion');
nextval
---------
1
(1 row)

--
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------


From: Gunnar Wolf <gwolf(at)gwolf(dot)org>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-29 03:07:12
Message-ID: 20061129030712.GA14313@gwolf.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor Lopez dijo [Mon, Nov 27, 2006 at 06:54:40PM +0100]:
> > > Existe ago como el numrow (creo) de Oracle, para numerar las lineas
> > > resultantes en un SELECT?
> >
> > Tiene mucho mas sentido que lo hagas en la aplicacion cliente, no?
>
> CREATE TEMP SEQUENCE enum;
> SELECT (posicion / items_por_pagina_de_buscador) -1 AS pagina
> FROM (SELECT nextval(enum) AS posicion, ID
> FROM textos
> ORDER BY titulo) AS t
> WHERE t.ID = ID_buscado
>
> o algo parecido, es mas rápido en el servidor ... no?

Pues... Del lado del cliente, basta que englobes tus resultados en una
lista numerada (<ol>) si vas a entregarlo en HTML. Si no va para HTML,
bastaría con (digamos):

$sth=$dbh->prepare('SELECT * FROM tabla WHERE condicion');
$sth->execute;
while (@data = $sth->fetchrow) {
$renglon++;
print "Los datos para el renglon $renglon son: $data[0] $data[1]...\n";
}

Vamos... Meramente ilustrativo - ¿Pero por qué crees que esto sería
más rápido del lado del servidor? Además, ¿qué pasa si mi tabla en
Oracle tiene un campo llamado rownum? :)

Saludos,

--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF


From: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: Gunnar Wolf <gwolf(at)gwolf(dot)org>
Cc: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-29 13:33:58
Message-ID: ca20cea2a511fa98e3292aa490cef56a@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


On Tue, 28 Nov 2006 21:07:12 -0600, Gunnar Wolf <gwolf(at)gwolf(dot)org> wrote:
>
> Vamos... Meramente ilustrativo - ¿Pero por qué crees que esto sería
> más rápido del lado del servidor? Además, ¿qué pasa si mi tabla en
> Oracle tiene un campo llamado rownum? :)

Es muy probable que rownum ser una palabra reservada en Oracle, y por lo
tanto no pueda ser usada en la definicion de tablas. No se, pero se me
ocurre eso.

--
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------


From: Gunnar Wolf <gwolf(at)gwolf(dot)org>
To: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
Cc: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-29 17:15:49
Message-ID: 20061129171549.GA28747@gwolf.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Martin Marques dijo [Wed, Nov 29, 2006 at 10:33:58AM -0300]:
> > Vamos... Meramente ilustrativo - ¿Pero por qué crees que esto sería
> > más rápido del lado del servidor? Además, ¿qué pasa si mi tabla en
> > Oracle tiene un campo llamado rownum? :)
>
> Es muy probable que rownum ser una palabra reservada en Oracle, y por lo
> tanto no pueda ser usada en la definicion de tablas. No se, pero se me
> ocurre eso.

Sí, lo pensé también, pero se me hace absurdo marcar como palabras
reservadas aquellas que no tienen sentido, y que muy bien podrían ser
utilizadas en una aplicación.

Yéndonos incluso un poco a la teoría de las bases de datos
relacionales, el número de renglón no significa absolutamente
nada. Puede tener significado dentro de tu aplicación. Recuerda que un
RDBMS trabaja siguiendo la teoría de conjuntos - Una solicitud afecta
(INSERT, UPDATE, DELETE) o genera (SELECT) un conjunto de
registros. Este conjunto no tienen ningún ordenamiento, sólo te
garantiza que todos los elementos que solicitaste serán entregados y
que no habrá duplicidad entre los mismos (esto es, tomando el renglón
completo como es manejado internamente, aún si estás especificando que
los resultados se filtren y sólo te sean entregados determinados
campos). Claro, puliendo un poco las consultas, puedes especificar que
el conjunto entregado _después_ de ser filtrado vuelva a garantizarte
unicidad de cada renglón (DISTINCT).

A todo esto, ¿dónde cabe el ORDER BY? ¡Qué bueno que preguntas! Queda
muy al final del proceso, al momento de "aplanar" el conjunto para
pasarlo secuencialmente a través del protocolo especificado y
entregado a tu programa cliente. El ordenamiento no significa _nada_
para los datos.

A mi entender, el concepto de 'rownum' que nos dan (¿das?) de Oracle
rompe con la teoría. Los renglones pueden ser reordenados, y sus datos
no deben variar. Al asignar un número a cada renglón estás alejándote
del modelo de teoría de conjuntos. Sí, puede sonar a purismo académico
contra pragmatismo de hombres de negocios, pero lo que hace Oracle
simplemente se me hace erróneo.

Te pongo un ejemplo simple más: En SQL tienes varias funciones
agregadoras, que te reducen el número de tuplas generadas, como avg(),
count() o sum(). ¿Por qué crees que no existe un total_so_far() que
vaya sumando cada uno de los renglones entregados? Porque ese tipo de
manipulación pertenece a la aplicación, no al RDBMS.

...Claro, sólo falta que alguien me azote con un manual y me haga ver
que la teoría de RDBMs y de teoría de conjuntos está equivocada, o que
ya no aplica lo que estudié. Pero la teoría se me hace limpia y
elegante :)

--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Gunnar Wolf <gwolf(at)gwolf(dot)org>
Cc: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-29 18:03:55
Message-ID: 20061129180355.GC4949@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Gunnar Wolf escribió:

> Te pongo un ejemplo simple más: En SQL tienes varias funciones
> agregadoras, que te reducen el número de tuplas generadas, como avg(),
> count() o sum(). ¿Por qué crees que no existe un total_so_far() que
> vaya sumando cada uno de los renglones entregados? Porque ese tipo de
> manipulación pertenece a la aplicación, no al RDBMS.

Estoy totalmente de acuerdo con tu exposición de la teoría, pero
aprovecho que has mencionado el "total_so_far" para hacer el alcance de
que en SQL:2003 se introdujo el concepto de "windowing functions", que
son funciones calculadas en torno a renglones adyacentes al "actual".
(Postgres no soporta windowing functions todavia)

Pero, claro, ROWNUM() no fue introducido para eso, sino para hacer lo
que en Postgres hacemos con LIMIT y OFFSET, que obviamente son una
solucion mucho mas limpia al problema ...

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


From: Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Gunnar Wolf <gwolf(at)gwolf(dot)org>, Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re[2]: numrow
Date: 2006-11-29 20:36:12
Message-ID: 1094033676.20061129153612@sedapal.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


============
Con fecha Miércoles, 29 de Noviembre de 2006, 01:03:55 p.m., escribió:

> Gunnar Wolf escribió:

>> Te pongo un ejemplo simple más: En SQL tienes varias funciones
>> agregadoras, que te reducen el número de tuplas generadas, como avg(),
>> count() o sum(). ¿Por qué crees que no existe un total_so_far() que
>> vaya sumando cada uno de los renglones entregados? Porque ese tipo de
>> manipulación pertenece a la aplicación, no al RDBMS.

> Estoy totalmente de acuerdo con tu exposición de la teoría, pero
> aprovecho que has mencionado el "total_so_far" para hacer el alcance de
> que en SQL:2003 se introdujo el concepto de "windowing functions", que
> son funciones calculadas en torno a renglones adyacentes al "actual".
> (Postgres no soporta windowing functions todavia)

> Pero, claro, ROWNUM() no fue introducido para eso, sino para hacer lo
> que en Postgres hacemos con LIMIT y OFFSET, que obviamente son una
> solucion mucho mas limpia al problema ...

Yo el ROWNUM lo uso para cosas interesantes como el sgte. caso:

select to_date(nvl(min(rn)+sysdate+18,sysdate))
from (select (rownum-1) rn
from estados)
where to_char(sysdate+18+rn,'D') not in (1,7)
and not exists (select null from fiestas_nac
where trunc(f_fiesta) = trunc(sysdate+18+rn));

Obtiene la fecha contados a partir de ahora (18 dias, ver query), sin
contar sábados, domingos y feriados (tabla fiestas_nac). Con el rownum
saco un listado de numeros del 1 al "n", segun la cantidad de
registros de la tabla estados (podría haber sido otra tabla,,,); es
para obtener un array de números enteros...y gracias a esto puedo
obtener un array de fechas...
Que yo sepa, Oracle no asigna el rownum a cada registro, por que como
bien dicen eso sería absurdo,, el rownum se arma al "vuelo". Sin
embargo el oracle utiliza el ROWID para identificar como único cada
registro, que para el caso de tablas con Primary Keys compuestas por
varias columnas podría ser más eficiente utilizar este dato (ROWID)
para realizar actualizaciones a partir de cursores por ejemplo.
No estoy defendiendo Oracle por si acaso, sólo estoy dando mi punto de
vista...

saludos...


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe>
Cc: Gunnar Wolf <gwolf(at)gwolf(dot)org>, Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-29 21:09:22
Message-ID: 20061129210922.GH7001@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Miguel Bernilla Sánchez escribió:

> Yo el ROWNUM lo uso para cosas interesantes como el sgte. caso:
>
> select to_date(nvl(min(rn)+sysdate+18,sysdate))
> from (select (rownum-1) rn
> from estados)
> where to_char(sysdate+18+rn,'D') not in (1,7)
> and not exists (select null from fiestas_nac
> where trunc(f_fiesta) = trunc(sysdate+18+rn));
>
> Obtiene la fecha contados a partir de ahora (18 dias, ver query), sin
> contar sábados, domingos y feriados (tabla fiestas_nac). Con el rownum
> saco un listado de numeros del 1 al "n", segun la cantidad de
> registros de la tabla estados (podría haber sido otra tabla,,,); es
> para obtener un array de números enteros...y gracias a esto puedo
> obtener un array de fechas...

Me da la impresion de que esto se puede hacer mas facilmente usando
generate_series(), un join con la tabla fiestas_nac, y LIMIT.

No confundas un array con un "record set" :-)

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


From: Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>
To: Gunnar Wolf <gwolf(at)gwolf(dot)org>
Cc: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-11-29 21:12:35
Message-ID: af60124a811e70c027c955305509a139@bugs.unl.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


On Wed, 29 Nov 2006 11:15:49 -0600, Gunnar Wolf <gwolf(at)gwolf(dot)org> wrote:
> Martin Marques dijo [Wed, Nov 29, 2006 at 10:33:58AM -0300]:
>>
>> Es muy probable que rownum ser una palabra reservada en Oracle, y por lo
>> tanto no pueda ser usada en la definicion de tablas. No se, pero se me
>> ocurre eso.
>
> Sí, lo pensé también, pero se me hace absurdo marcar como palabras
> reservadas aquellas que no tienen sentido, y que muy bien podrían ser
> utilizadas en una aplicación.

[snip]

> ...Claro, sólo falta que alguien me azote con un manual y me haga ver
> que la teoría de RDBMs y de teoría de conjuntos está equivocada, o que
> ya no aplica lo que estudié. Pero la teoría se me hace limpia y
> elegante :)

No creo que haya que aclararlo, pero "estoy 100% de acuerdo con vos!" :-)

Solo acotaba al hecho que planteabas de tener una columna que se llame
numrows. Y como aclare, no tengo idea si Oracle hace eso o no (aunque
debería si usa esa palabra reservada).

Respecto a lo que es una RDBMS, 100% de acuerdo.

--
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------


From: Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Gunnar Wolf <gwolf(at)gwolf(dot)org>, Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)ar>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re[2]: numrow
Date: 2006-11-29 21:21:35
Message-ID: 1095258781.20061129162135@sedapal.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

============
Con fecha Miércoles, 29 de Noviembre de 2006, 04:09:22 p.m., escribió:

> Miguel Bernilla Sánchez escribió:

>> Yo el ROWNUM lo uso para cosas interesantes como el sgte. caso:
>>
>> select to_date(nvl(min(rn)+sysdate+18,sysdate))
>> from (select (rownum-1) rn
>> from estados)
>> where to_char(sysdate+18+rn,'D') not in (1,7)
>> and not exists (select null from fiestas_nac
>> where trunc(f_fiesta) = trunc(sysdate+18+rn));
>>
>> Obtiene la fecha contados a partir de ahora (18 dias, ver query), sin
>> contar sábados, domingos y feriados (tabla fiestas_nac). Con el rownum
>> saco un listado de numeros del 1 al "n", segun la cantidad de
>> registros de la tabla estados (podría haber sido otra tabla,,,); es
>> para obtener un array de números enteros...y gracias a esto puedo
>> obtener un array de fechas...

> Me da la impresion de que esto se puede hacer mas facilmente usando
> generate_series(), un join con la tabla fiestas_nac, y LIMIT.

> No confundas un array con un "record set" :-)

Bueno, debí decir un simil a array... ¿Cómo se haría con
generate_series()?. Por mi parte voy a revisar el tema y tratar de
armar el query...


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-05 20:06:48
Message-ID: 200612052106.48706.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Lo primero dar las gracias a quien me ha indicado un posible código ...
gracias MM.

Lo siguiente es que no lo entiendo ...
A) 'rownum' es una pseudocolumna de Oracle SOLO para numerar las filas
seleccionadas. No puede haber, pues, ninguna columna con ese nombre.
B) Esto, que yo sepa, no afecta a ninguna teoría sobre bases de datos. Es como
abrir el frontal del coche para ver el motor, cada coche lo hace de una
manera, pero eso no afecta al concepto de coche.
C) Que tenga que plantear porque es mejor que el servidor trabaje y no el
cliente se me hace 'cuesta arriba', sobretodo en este foro ...

Un ejemplo

Pongamos una agencia de paquetería que transporta mil paquetes al día (grandes
pequeños y en todas sus sucursales) ...

1000 paquetes x 300 dias (quito no laborables a 'bulto')

Supongamos que, por la razón que sea, se quiere saber la posición secuencial
que ocupa cierto paquete (seguro que cosas mas raras hemos visto todos)

Tenemos dos opciones :

1 - En el cliente.
El cliente solicita la numeración de paquetes y la información para ordenarlos
(comunicación cliente a servidor - pocos datos).
El servidor envía la información de los 300.000 paquetes (comunicación
servidor a cliente - datos necesarios de cada paquete x cantidad de
paquetes - MUCHOS datos a través de una posible red ... a su velocidad)
El cliente tiene que habilitar un buffer en consecuencia con la 'avalancha' de
datos que recibe.
El cliente tiene que hacer el trabajo (a su velocidad) debe clasificar,
numerar y sacar el resultado ... que solo es un valor.
FIN

2 - En el servidor.
El cliente solicita la posición de un paquete (hasta aquí poca variación ->
comunicación cliente a servidor - pocos datos).
El servidor procesa sus datos (a su velocidad y conociendo su estructura
de 'primera mano' - optimización).
El servidor ha determinado que el dato es X y se lo envía al cliente
(comunicación servidor a cliente - SOLO UN DATO a través de la misma red de
antes ... con su misma velocidad).
El cliente solo tiene que capturar ese dato, sin tener que organizar sus
recursos para mas datos, y saca sus resultados.
FIN

Pregunta : ¿Que es mas rápido? Y no tiene nada que ver con gestores de datos.

Ni que los datos estén centralizados o distribuidos.

Es un tema cliente / servidor básico (independientemente del tipo de
servidor)..

Menos mal que para ver una página web (la que sea y como este hecha) no
tenemos que descargarnos el servidor entero y buscar, luego, que queremos
ver!!!

Con un poquito de (mala) suerte he vuelto a explicarme mal!!!

:-(

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-05 20:52:08
Message-ID: 20061205205208.GK14220@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor Lopez escribió:

> Un ejemplo
>
> Pongamos una agencia de paquetería que transporta mil paquetes al día (grandes
> pequeños y en todas sus sucursales) ...
>
> 1000 paquetes x 300 dias (quito no laborables a 'bulto')
>
> Supongamos que, por la razón que sea, se quiere saber la posición secuencial
> que ocupa cierto paquete (seguro que cosas mas raras hemos visto todos)

Cual seria la utilidad de esa informacion?

Si pones un ejemplo concreto, real, util, podemos conversar al respecto.
Porque uno puede justificar cualquier cosa buscando un ejemplo
suficientemente distorsionado.

Quieres saber cuales son los paquetes de una determinada sucursal en un
determinado dia? Trivial -- una clausula WHERE.

Los paquetes mas grandes entre esos? Un ORDER BY/LIMIT.

Los paquetes que llegaron mas temprano? idem.

Pero "la posicion secuencial de cierto paquete" ... entre todos los
paquetes de todas las sucursales del año ... perdoname pero me parece
totalmente descabellado.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-05 23:06:50
Message-ID: 200612060006.50046.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

> Si pones un ejemplo concreto, real, util, podemos conversar al respecto.
> Porque uno puede justificar cualquier cosa buscando un ejemplo
> suficientemente distorsionado.

Tengo una tabla de artículos ...

CREATE TABLE articulos (
id SERIAL NOT NULL PRIMARY KEY,
...
);

Quiero determinar en que página, con 'n' artículos por página, se encuentra un
articulo.

Es una herramienta que aparece en muchos sitios donde hay cualquier
repositorio de artículos de mas de una página, pero solo se el resultado en
(x)html. No se el proceso, y el único que se me ocurre es el de calcularlo en
el servidor que tiene todos los datos.

No creo que lleguen a los 300.000 artículos, pero podemos pensar en un
periódico 'online'

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-06 00:10:09
Message-ID: 20061206001009.GF18593@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor Lopez escribió:
> > Si pones un ejemplo concreto, real, util, podemos conversar al respecto.
> > Porque uno puede justificar cualquier cosa buscando un ejemplo
> > suficientemente distorsionado.
>
> Tengo una tabla de artículos ...
>
> CREATE TABLE articulos (
> id SERIAL NOT NULL PRIMARY KEY,
> ...
> );
>
> Quiero determinar en que página, con 'n' artículos por página, se encuentra un
> articulo.

Hmm, estas pensando al reves. Quieres saber en que pagina esta en el
articulo X, o que articulos hay en la pagina X? Para este caso puedes
usar LIMIT/OFFSET.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-06 12:38:26
Message-ID: 200612061338.26271.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El Miércoles, 06 de Diciembre de 2006 01:10, AH nos dijo ...:
> Victor Lopez escribió:
> > > Si pones un ejemplo concreto, real, util, podemos conversar al respecto.
> > > Porque uno puede justificar cualquier cosa buscando un ejemplo
> > > suficientemente distorsionado.
> >
> > Tengo una tabla de artículos ...
> > CREATE TABLE articulos (
> > id SERIAL NOT NULL PRIMARY KEY,
> > ...
> > );
> > Quiero determinar en que página, con 'n' artículos por página, se
encuentra un
> > articulo.
>
> Hmm, estas pensando al reves. Quieres saber en que pagina esta en el
> articulo X, o que artic ¿?ulos hay en la pagina X? Para este caso puedes
> usar LIMIT/OFFSET.
>
Lo de LIMIT/OFFSET ya lo se y lo tengo hecho.
Otra cosa es que me acuerde de la utilidad concreta .. muchos post y cambiando
de ideas al vuelo (snif!).
Cuando me acuerde volveré a preguntarlo.
A lo peor era una 'chorrada', por eso no me acuerdo.

:-(

Pero he abierto un hilo que no creía que generaría tanta polémica/discusión, y
no se si eso es bueno o malo.

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-07 06:25:59
Message-ID: c2d9e70e0612062225s52210afat5b6531c9b7cd1e9a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 12/6/06, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com> wrote:
> Lo de LIMIT/OFFSET ya lo se y lo tengo hecho.
> Otra cosa es que me acuerde de la utilidad concreta .. muchos post y cambiando
> de ideas al vuelo (snif!).
> Cuando me acuerde volveré a preguntarlo.
> A lo peor era una 'chorrada', por eso no me acuerdo.
>
> :-(
>
> Pero he abierto un hilo que no creía que generaría tanta polémica/discusión, y
> no se si eso es bueno o malo.
>

Si simplemente respondieramos a cada cosa que la gente pregunta sin
preguntarnos (y de paso forzar al resto a preguntarse): ¿es esto
realmente lo que busca? ¿soluciona algun problema, o solo cubrira
temporalmente una falla fundamental?

eso seria malo... no se trata de las respuestas, se trata de las
preguntas, se trata de entender los problemas

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook


From: Gunnar Wolf <gwolf(at)gwolf(dot)org>
To: ricardo yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
Cc: Jaime Casanova <systemguards(at)gmail(dot)com>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-12 17:07:27
Message-ID: 20061212170727.GC17991@gwolf.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

ricardo yanguma dijo [Tue, Dec 12, 2006 at 12:08:11PM -0500]:
> tengo un problema que en oracle se resuelve con el rowid , pero no se como
> hacerlo en postgres, resulta que tengo en una tabla donde existen duplicado
> que deseo borrar, pero debo dejar uno solo. como haria esto?

Umh... Un poco puerco, pero te sirve:

DELETE FROM tabla WHERE id IN (SELECT t1.id FROM tabla t1, tabla t2
WHERE t1.id > t2.id AND t1.campo1=t2.campo1 AND t1.campo2=t2.campo2
(...) );

Saludos,

--
Gunnar Wolf - gwolf(at)gwolf(dot)org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF


From: "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>
Cc: "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-12 17:08:11
Message-ID: fbe285730612120908h2284ffdfj1cf4c34bb6697c2c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

tengo un problema que en oracle se resuelve con el rowid , pero no se como
hacerlo en postgres, resulta que tengo en una tabla donde existen duplicado
que deseo borrar, pero debo dejar uno solo. como haria esto?

On 12/7/06, Jaime Casanova <systemguards(at)gmail(dot)com> wrote:
>
> On 12/6/06, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com> wrote:
> > Lo de LIMIT/OFFSET ya lo se y lo tengo hecho.
> > Otra cosa es que me acuerde de la utilidad concreta .. muchos post y
> cambiando
> > de ideas al vuelo (snif!).
> > Cuando me acuerde volveré a preguntarlo.
> > A lo peor era una 'chorrada', por eso no me acuerdo.
> >
> > :-(
> >
> > Pero he abierto un hilo que no creía que generaría tanta
> polémica/discusión, y
> > no se si eso es bueno o malo.
> >
>
> Si simplemente respondieramos a cada cosa que la gente pregunta sin
> preguntarnos (y de paso forzar al resto a preguntarse): ¿es esto
> realmente lo que busca? ¿soluciona algun problema, o solo cubrira
> temporalmente una falla fundamental?
>
> eso seria malo... no se trata de las respuestas, se trata de las
> preguntas, se trata de entender los problemas
>
> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software engineers striving to
> build bigger and better idiot-proof programs and the universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 8: explain analyze es tu amigo
>


From: "Raul Andres Duque" <raulandresduque(at)hotmail(dot)com>
To: "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>, "Jaime Casanova" <systemguards(at)gmail(dot)com>
Cc: "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: numrow
Date: 2006-12-12 18:43:53
Message-ID: BAY135-DAV1454C4038C0DCBF91116BEBAD70@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

crea en la tabla un campo serial o usa oids ... te van a funcionar exactamente igual que los rowid ... aunque la recomendación es que uses seriales ya que los oids se mantienen solo por compatibilidad con versiones anteriores.

Atentamente,

RAUL DUQUE
Bogotá, Colombia
----- Original Message -----
From: ricardo yanguma
To: Jaime Casanova
Cc: Victor Lopez ; pgsql-es-ayuda(at)postgresql(dot)org
Sent: Tuesday, December 12, 2006 12:08 PM
Subject: Re: [pgsql-es-ayuda] numrow

tengo un problema que en oracle se resuelve con el rowid , pero no se como hacerlo en postgres, resulta que tengo en una tabla donde existen duplicado que deseo borrar, pero debo dejar uno solo. como haria esto?


On 12/7/06, Jaime Casanova <systemguards(at)gmail(dot)com> wrote:
On 12/6/06, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com> wrote:
> Lo de LIMIT/OFFSET ya lo se y lo tengo hecho.
> Otra cosa es que me acuerde de la utilidad concreta .. muchos post y cambiando
> de ideas al vuelo (snif!).
> Cuando me acuerde volveré a preguntarlo.
> A lo peor era una 'chorrada', por eso no me acuerdo.
>
> :-(
>
> Pero he abierto un hilo que no creía que generaría tanta polémica/discusión, y
> no se si eso es bueno o malo.
>

Si simplemente respondieramos a cada cosa que la gente pregunta sin
preguntarnos (y de paso forzar al resto a preguntarse): ¿es esto
realmente lo que busca? ¿soluciona algun problema, o solo cubrira
temporalmente una falla fundamental?

eso seria malo... no se trata de las respuestas, se trata de las
preguntas, se trata de entender los problemas

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook

---------------------------(fin del mensaje)---------------------------
TIP 8: explain analyze es tu amigo


From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: "Raul Andres Duque" <raulandresduque(at)hotmail(dot)com>
Cc: "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>, "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-13 05:19:12
Message-ID: c2d9e70e0612122119ib4e2238lb60719c3fcddb76@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

>> From: ricardo yanguma
>> tengo un problema que en oracle se resuelve con el rowid , pero no se como
>> hacerlo en postgres, resulta que tengo en una tabla donde existen duplicado
>> que deseo borrar, pero debo dejar uno solo. como haria esto?
>>
On 12/12/06, Raul Andres Duque <raulandresduque(at)hotmail(dot)com> wrote:
> crea en la tabla un campo serial o usa oids ... te van a funcionar
> exactamente igual que los rowid ... aunque la recomendación es que uses
> seriales ya que los oids se mantienen solo por compatibilidad con versiones
> anteriores.
>

no entiendo como resuelves eso en oracle usando rowid, talvez me
equivoco pero el rowid en oracle identifica de forma unica a cada fila
asi que no deberia haber ninguna relacion entre el rowid de las filas
duplicadas.

tampoco entiendo como serial, sequence u oids te pueden ayudar...

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook


From: "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>
Cc: "Raul Andres Duque" <raulandresduque(at)hotmail(dot)com>, "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-13 12:59:16
Message-ID: fbe285730612130459s4ca67855g14e504d3eb83bbb1@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Jaime lo realice con sequencias, es muy facil, ya que cada campo queda
identificado con una sequencia. y es este es el sentencia que utilice

id=sequencia

delete from gestion where id in (select max(id) from gestion where dpto=35)

On 12/13/06, Jaime Casanova <systemguards(at)gmail(dot)com> wrote:
>
> >> From: ricardo yanguma
> >> tengo un problema que en oracle se resuelve con el rowid , pero no se
> como
> >> hacerlo en postgres, resulta que tengo en una tabla donde
> existen duplicado
> >> que deseo borrar, pero debo dejar uno solo. como haria esto?
> >>
> On 12/12/06, Raul Andres Duque <raulandresduque(at)hotmail(dot)com> wrote:
> > crea en la tabla un campo serial o usa oids ... te van a funcionar
> > exactamente igual que los rowid ... aunque la recomendación es que uses
> > seriales ya que los oids se mantienen solo por compatibilidad con
> versiones
> > anteriores.
> >
>
> no entiendo como resuelves eso en oracle usando rowid, talvez me
> equivoco pero el rowid en oracle identifica de forma unica a cada fila
> asi que no deberia haber ninguna relacion entre el rowid de las filas
> duplicadas.
>
> tampoco entiendo como serial, sequence u oids te pueden ayudar...
>
> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software engineers striving to
> build bigger and better idiot-proof programs and the universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
>


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: ricardo yanguma <ricardo(dot)yanguma(at)gmail(dot)com>
Cc: Jaime Casanova <systemguards(at)gmail(dot)com>, Raul Andres Duque <raulandresduque(at)hotmail(dot)com>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-13 13:33:18
Message-ID: 20061213133318.GB4751@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

ricardo yanguma escribi:
> Jaime lo realice con sequencias, es muy facil, ya que cada campo queda
> identificado con una sequencia. y es este es el sentencia que utilice
>
> id=sequencia
>
> delete from gestion where id in (select max(id) from gestion where dpto=35)

Bueno, si vas a hacer algo tan simplista puedes usar el pseudo-campo
ctid.

De hecho puedes solucionar todo este problema de los duplicados sin
secuencias, seriales, rowid y nada de eso, usando solamente el ctid.


From: "Raul Andres Duque" <raulandresduque(at)hotmail(dot)com>
To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>
Cc: "Jaime Casanova" <systemguards(at)gmail(dot)com>, "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: numrow
Date: 2006-12-13 13:42:22
Message-ID: BAY135-DAV6F3057F782E18A8DCCB43BAD60@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Disculpas Alvaro ... a qué te refieres con el ctid?

Atentamente,

RAUL DUQUE
Bogotá, Colombia

----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
To: "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>
Cc: "Jaime Casanova" <systemguards(at)gmail(dot)com>; "Raul Andres Duque"
<raulandresduque(at)hotmail(dot)com>; "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>;
<pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Wednesday, December 13, 2006 8:33 AM
Subject: Re: [pgsql-es-ayuda] numrow

> ricardo yanguma escribió:
>> Jaime lo realice con sequencias, es muy facil, ya que cada campo queda
>> identificado con una sequencia. y es este es el sentencia que utilice
>>
>> id=sequencia
>>
>> delete from gestion where id in (select max(id) from gestion where
>> dpto=35)
>
> Bueno, si vas a hacer algo tan simplista puedes usar el pseudo-campo
> ctid.
>
> De hecho puedes solucionar todo este problema de los duplicados sin
> secuencias, seriales, rowid y nada de eso, usando solamente el ctid.
>
>


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Raul Andres Duque <raulandresduque(at)hotmail(dot)com>
Cc: ricardo yanguma <ricardo(dot)yanguma(at)gmail(dot)com>, Jaime Casanova <systemguards(at)gmail(dot)com>, Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-13 14:16:44
Message-ID: 20061213141644.GA8970@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Raul Andres Duque escribió:
> Disculpas Alvaro ... a qué te refieres con el ctid?

select ctid, * from tabla limit 20


From: "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>
To: "Raul Andres Duque" <raulandresduque(at)hotmail(dot)com>, "ricardo yanguma" <ricardo(dot)yanguma(at)gmail(dot)com>, "Jaime Casanova" <systemguards(at)gmail(dot)com>, "Victor Lopez" <v(dot)lopez(dot)s(at)ono(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-13 16:00:34
Message-ID: fbe285730612130800j6c43144bv8807db29a9076f42@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Gracias por tu respuesta, no conocia esta opcion

On 12/13/06, Alvaro Herrera <alvherre(at)commandprompt(dot)com> wrote:
>
> Raul Andres Duque escribió:
> > Disculpas Alvaro ... a qué te refieres con el ctid?
>
> select ctid, * from tabla limit 20
>
>


From: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-15 00:37:56
Message-ID: 200612150137.57034.v.lopez.s@ono.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El Miércoles, 13 de Diciembre de 2006 06:19, me dijistes que:
> >> From: ricardo yanguma
> >> tengo un problema que en oracle se resuelve con el rowid

Solo? En una sentencia? Sin entrar en PL/SQL? ... siento curiosidad ... como?

> >> , pero no se como
> >> hacerlo en postgres, resulta que tengo en una tabla donde existen
duplicado
> >> que deseo borrar, pero debo dejar uno solo. como haria esto?

Yo lo haría así:

Primero determinar cuales están duplicadas ...
SELECT DISTINCT col1, count(*) AS num FROM tab1 GROUP BY col1
... sacamos las que tienen count(*) mayor que '1' ...
SELECT col1 FROM (...) WHERE num > 1
... y las borramos ...
DELETE FROM tab1 WHERE col1 IN (...);
------ resultado (ancho fijo en las letras) -------------
DELETE FROM tab1
WHERE col1 IN (SELECT col1
FROM (SELECT DISTINCT col1,
count(*) AS num
FROM tab1
GROUP BY col1
)
WHERE num > 1
)
;
----------------------

Es solo una idea ... mas ideas! :-)

> On 12/12/06, Raul Andres Duque <raulandresduque(at)hotmail(dot)com> wrote:
> > crea en la tabla un campo serial o usa oids ... te van a funcionar
> > exactamente igual que los rowid ... aunque la recomendación es que uses
> > seriales ya que los oids se mantienen solo por compatibilidad con
versiones
> > anteriores.
> >
>
> no entiendo como resuelves eso en oracle usando rowid, talvez me
> equivoco pero el rowid en oracle identifica de forma unica a cada fila
> asi que no deberia haber ninguna relacion entre el rowid de las filas
> duplicadas.
>
> tampoco entiendo como serial, sequence u oids te pueden ayudar...
>
> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software engineers striving to
> build bigger and better idiot-proof programs and the universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
>

--
----o---( )---o----
Saludos de Victor Lopez Sabio
v(dot)lopez(dot)s(at)ono(dot)com
--------oooo--------


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Victor Lopez <v(dot)lopez(dot)s(at)ono(dot)com>
Cc: Jaime Casanova <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: numrow
Date: 2006-12-15 01:07:53
Message-ID: 20061215010753.GH31475@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Victor Lopez escribió:
> El Miércoles, 13 de Diciembre de 2006 06:19, me dijistes que:
> > >> From: ricardo yanguma
> > >> tengo un problema que en oracle se resuelve con el rowid
>
> Solo? En una sentencia? Sin entrar en PL/SQL? ... siento curiosidad ... como?

Gunnar Wolf dio una sugerencia hace como una semana, que si mal no
recuerdo involucra un hipotetico "id" de la tabla -- puedes hacer lo
mismo pero usando el CTID.