From: | Claudio Bustos Bravo <cbustosb(at)articlynx(dot)cl> |
---|---|
To: | Eugenio Segura <eugenio(dot)segura(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Misma tabla ayuda! |
Date: | 2007-01-25 20:28:52 |
Message-ID: | 1169756932.29673.28.camel@clay |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El mié, 24-01-2007 a las 13:52 -0600, Eugenio Segura escribió:
> Tengo una tabla de alumnos y la nota digamos
> Nombre Nota Periodo Materia
> Eugenio 60 0 Matematica
> Eugenio 70 1 Matematica
> Eugenio 80 2 Matematica
> Eugenio 61 0 Español
> Eugenio 71 1 Español
> Eugenio 81 2 Español
>
> Obiamente otros datos mas...
>
> pero lo q necesito es obtener esto
>
> Nombre Nota Nota Nota Materia
> Eugenio 60 70 80 Matematica
> Eugenio 61 71 81 Español
>
> intente hacer 4 joins en la misma tabla pero dura demaciado y se traba
> el programa
>
> alguien sabe una mejor forma de hacerlo?
>
joins?, en una sola query?
Si la cantidad de columnas (notas) a proyectar (por periodo/materia) no
es demasiada (15, 20?), podrias hacer subquerys en la proyeccion en dos
pasos, de la forma:
a) armar las proyecciones
para cada cantidad de notas, hacer:
$proyeccion = $proyeccion ||
",(select nota
from notas
where
rut_alumno = a.rut --este es literal
id_materia = m.id
id_periodo = p.id
id = <VALOR> --id de la nota de esa materia en ese periodo
) as nota_<VALOR> " --correlativo (del ciclo)
loop
b) la query (unica) completa:
$query = "select
a.nombre as nombre_alumno
$proyeccion,
m.nombre as nombre_materia,
p.nombre as nombre_periodo
from
materias as m
inner join periodos as p on ....
inner join cursa as c on ....
inner join alumno as a on ...
... defines los alumnos, materias y periodos ..
"
No es muy ortodoxo, pero ha resultado... en particular ha tenido mejor
rendimiento que el contrib/crosstab
eso!...
Claudio
> ---------------------------(fin del mensaje)---------------------------
> TIP 5: ¿Has leído nuestro extenso FAQ?
>
> http://www.postgresql.org/files/documentation/faqs/FAQ.html
>
--
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-01-25 20:45:59 | Re: Última tupla insertada... |
Previous Message | Daniel Carrero | 2007-01-25 19:49:15 | Re: Sitio en espaniol |