Ver Mensaje Individual
  #11 (permalink)  
Antiguo 15/10/2009, 06:46
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: como establecer parametros de consulta variables

En realidad son redundantes, porque la relación con ambas informaciones surge de la tabla COMISION_USUARIO que te mencioné unos posts antes.
Esta tabla debería depender otra denominada COMISION_ASISTENCIA, que permita guardar la asistencia de los usuarios a esa comisión, así tendrías:
COMISION_USUARIO(comision_id, usuario_id, fecha_inscrip, otros datos)
COMISION_ASISTENCIA(comision_id, usuario_id, fecha).
De esta forma, en lugar de dos tablas adicionales tienes sólo una, y para saber quienes asisten a una actividad solo deberías hacer algo así:
Código sql:
Ver original
  1. SELECT U.usuario_id, C.comision_id, actividad_id
  2. FROM usuario U INNER JOIN comision_usuario USING(usuario_id)
  3.      INNER JOIN comision C USING(comision_id)
  4.      INNER JOIN actividad A USING(actividad_id)
  5. ORDER BY actividad_id, comision_id, usuario_id;
(el ORDER BY es opcional en este caso, depende de cómo lo quieras ordenar)
Si sólo quieres las actiidades en que está inscripto:

Código sql:
Ver original
  1. SELECT DISTINCT U.usuario_id, U.Apellido, U.Nombre, A.denominacion
  2. FROM usuario U INNER JOIN comision_usuario USING(usuario_id)
  3.      INNER JOIN comision C USING(comision_id)
  4.      INNER JOIN actividad A USING(actividad_id)
  5. ORDER BY usuario_id, actividad_id;

Si lo que quieres es ver los horarios de un usuario:

Código sql:
Ver original
  1. SELECT DISTINCT U.usuario_id, U.Apellido, U.Nombre, A.denominacion, H.dia_sermana, H.Inicio, H.Fin
  2. FROM usuario U INNER JOIN comision_usuario USING(usuario_id)
  3.      INNER JOIN comision C USING(comision_id)
  4.      INNER JOIN actividad A USING(actividad_id)
  5.      INNER JOIN horario H USING(horario_id)
  6. ORDER BY u.usuario_id, A.actividad_id, h.dia_semana, h.inicio;

Precisamente por esto decía que una tabla para conservar esta información es redundante: porque tendrás dos tablas, al menos, donde se repite una relación de datos (sea esta directa o indirecta).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)