[Pgsql-ayuda] Optimizando PostgreSQL

jota machuca jotamachuca@hotmail.com
Sat, 12 Jul 2003 13:39:57 -0400


Te cuento...

La estructura de las tablas es la siguiente

ASIGNATURAS_DISPONIBLES (AD)
  (pfk) codigo_asignatura
  (pfk) codigo_nivel
  (pfk) codigo_curso

PROFESOR_DICTA_ASIGNATURA (PDA)
  (pfk) codigo_asignatura
  (pfk) codigo_nivel
  (pfk) codigo_curso
  (pfk) rut_profesor
  estado_asign_profesor

la relacion es mas oo menos

                 /
AD -|---------- PDA
                 \

entonces... para que un profesor dicte una asignatura , esta tiene que estar 
en la tabla AD. para obtener las asignaturas disponibles para un profesor 
hago el siguiente weury


select codigo_asignatura, codigo_nivel, codigo_curso
from ASIGNATURAS_DISPONIBLES
EXCEPT
select codigo_asignatura, codigo_nivel, codigo_curso
from PROFESOR_DICTA_ASIGNATURA
WHERe rut_profesor = [rut_profesor]
and estado_asign_profesor = true

El queri retorna lo que se pide.. ahora necesito saber si con este query , 
puedo obtener el nombre de la asignatura, el nombre del nivel , y el nombre 
del curso...

Algo como
select codigo_asignatura, codigo_nivel, codigo_curso , [OJO ACA ]  
a.nombre_asignatura
from ASIGNATURAS_DISPONIBLES, ASIGNATURA A
EXCEPT
select codigo_asignatura, codigo_nivel, codigo_curso
from PROFESOR_DICTA_ASIGNATURA
WHERe rut_profesor = [rut_profesor]
and estado_asign_profesor = true

se que esto esta malo... pero esa es la idea..

Un abrazo

Jota

>From: Alvaro Herrera <alvherre@dcc.uchile.cl>
>To: jota machuca <jotamachuca@hotmail.com>
>CC: pgsql-ayuda@tlali.iztacala.unam.mx
>Subject: Re: [Pgsql-ayuda] Optimizando PostgreSQL
>Date: Sat, 12 Jul 2003 13:22:03 -0400
>
>On Sat, Jul 12, 2003 at 12:29:59PM -0400, jota machuca wrote:
>
> > El problema esta en que las tuplas que retorna son codigos a otras 
>tablas
> > referenciales, me explico, me retorna codigo_asignatura, codigo_curso y
> > codigo_nivel, y lo que me gustaria hacer es obtener el 
>nombre_asignatura,
> > nombre_curso, y el nombre_nivel , que estan en unas tablas 
>referenciales...
>
>Sin las definiciones de las tablas es dificil adivinar, pero es posible
>que puedas hacer con un subselect del tipo:
>
>select * from asignaturas where asignatura_id not in (
>	select asignatura-id-que-da-el-profesor
>)
>
>
>Una vez que hayas logrado hacerlo de esta manera, conviertelo a
>WHERE EXISTS (...) siguiendo el FAQ, porque el rendimiento de
>IN (select ...) no es muy bueno en 7.3 (en 7.4 vuela)
>
>--
>Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
>Officer Krupke, what are we to do?
>Gee, officer Krupke, Krup you! (West Side Story, "Gee, Officer Krupke")

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger: 
http://messenger.yupimsn.com/