From: | Henry <hensa22(at)yahoo(dot)es> |
---|---|
To: | Rafael De_Linares <rafaeldelinares(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: ejecucion mas rapida que a base de scripts |
Date: | 2007-02-10 22:52:46 |
Message-ID: | 482825.39109.qm@web30813.mail.mud.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Rafael De_Linares <rafaeldelinares(at)gmail(dot)com> escribió:
El día 10/02/07, Rafael De_Linares <rafaeldelinares(at)gmail(dot)com> escribió: Saludos y gracias por tu pronta respuesta, ya escribiendo el correo, pensaba que seguro que alvaro contesta....
Bueno te comento, el procesimiento se ejecuta por bloques de registro por ejemplo.
nombre empleado fechaimporte ciudad1 ciudad2
rafael ; 01/01/07; malaga; malaga;
rafael ; 28/01/07; sevilla; malaga;
rafael ; 11/02/07; sevilla; malaga;
rafael ; 18/02/07; malaga; malaga
marilo ; 01/04/07; marbella; malaga
marilo ; 28/05/07; malaga; malaga
marilo ; 11/08/07; sevilla; malaga
marilo ; 18/08/07; sevilla; malaga
miryam; 01/02/07; malaga; malaga;
miryam ; 28/01/07; sevilla; malaga;
miryam ; 11/02/07; sevilla; sevilla;
miryam ; 18/02/07; malaga; malaga
lucia ; 01/04/07; marbella; malaga
lucia ; 28/09/07; malaga; sevilla
lucia ; 11/08/07; sevilla; malaga
lucia ; 18/08/07; sevilla; malaga
pepe ; 01/04/07; marbella; malaga
pepe ; 28/05/07; malaga; malaga
pepe ; 11/08/07; granada; malaga
pepe ; 18/08/07; granada; malaga
/* las fechas son aleatorias
el proceso a ejecutar seria,
para cada empleado, elegir aquel registro que sea el mas antiguo y que ciudad2 sea sevilla, si no existe ninguna ocurrencia buscar y elegir aquella que ciudad1 sea sevilla, en el caso de no cumplir ninguna de las dos reglas no se considera el empleado
el resultado tendria que ser
rafael ; 28/01/07; sevilla; malaga;
marilo ; 11/08/07; sevilla; malaga
miryam ; 11/02/07; sevilla; sevilla;
lucia ; 11/08/07; sevilla; malaga
pepe no se considera por no tener ninguna ciudad sevilla.
no se si te ha quedado claro.
en php, lo que hago es procesar de la siguiente forma :
- hago un select distinct por nombre de empleado.
- cargo una tabla temporal con los datos de ese empleado,
- verifico la regla que te he comentado.
- inserto en la tabla resulltante el valor elegido.
y asi para cada valor de nombre empleado.
como te comento un proceso muy lento para tener una carga de datos enorme, el numero de registros que tengo es de aprox 24000 registros, y un select distinct por nombre empleado me da alrededor de 14000 registros.
los datos como habras adivinado son ficticios.
gracias
El día 10/02/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com > escribió: Rafael De_Linares escribió:
> La pregunta es la siguiente, siguiendo en mi afan de mientras mas rapido
> mejor. me encuentro en que realizo una serie de operaciones recorriendo la
> tabla y realizando operaciones a cada uno de los registros, cojo aquellos
> que son iguales por un campo, los incorporo a una tabla auxiliar, veo sus
> caracteristicas, veo cual me interesa e introduzco en otra tabla aquel que
> segun mis evaluaciones considero mejor.
tal vez esta consulta te pueda dar alguna idea
insert into alguna_tabla
select campo1,campo2 ..... from tabla as d where
d.fecha= (select min(fecha) from datos as dx where trim(dx.empleado)=trim(d.empleado)) and
lower(trim(d.ciudad1))='sevilla'
donde la sub consulta
select min(fecha) from datos as dx where trim(dx.empleado)=trim(d.empleado)
va a retornar la menor fecha para cada empleado.
and esto va en la consulta principal :
lower(trim(d.ciudad1))='sevilla' para filtrar solo sevilla.
espero ke te ayude en algo.
---------------------------------
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
From | Date | Subject | |
---|---|---|---|
Next Message | ruben avila galindo | 2007-02-10 23:02:18 | Crystal report 8.0 + Visual basic 6.0+POSTGRESQL |
Previous Message | Damian Culotta | 2007-02-10 22:45:23 | OT: Querys con JDBC |