Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta en forma de horario

Estas en el tema de Consulta en forma de horario en el foro de Mysql en Foros del Web. Hola que tal tengo una tabla que es un detalle de horario, en si donde asigno a un profesor con su curso el dia y ...
  #1 (permalink)  
Antiguo 10/08/2009, 20:34
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 2 meses
Puntos: 1
Pregunta Consulta en forma de horario

Hola que tal tengo una tabla que es un detalle de horario, en si donde asigno a un profesor con su curso el dia y la hora que le toca clases en una determinado nivel,grado,aula... en si ya esta todo pero no tengo idea de como poder crear una consulta en forma de horario para enviarla a una reporte y me lo lea como una consulta normal osea algo asi mas me interesa este formato

Lunes Martes Miercoless Jueves Viernes
Profe1 Profe2 ...
Curso5 Curso 3
. .
. .
. .

esta es mi tabla con mi consulta respectiva, en si solo necesito la forma de la consulta yo ya me ocupo de hacer las uniones de las tablas gracias. =D


Código PHP:
CREATE TABLE HORARIO_PROFESOR (
  
hor_codigo CHAR(10NOT NULL,
  
dia_codigo INT NOT NULL,
  
hra_codigo INT NOT NULL,
  
prf_codigo CHAR(10NOT NULL,
  
cur_codigo CHAR(6NOT NULL,
  
INDEX fk_dia_hprofesor(dia_codigo),
  
INDEX fk_curso_hprofesor(cur_codigo),
  
INDEX fk_profesor_hprofesor(prf_codigo),
  
INDEX fk_horario_hprofesor(hor_codigo),
  
INDEX fk_hora_hprofesor(hra_codigo)
)
TYPE=InnoDB;


hor_codigo dia_codigo hra_codigo prf_codigo cur_codigo 

HOR0000001 1 1 PRF0000001 CUR004 
HOR0000001 2 1 PRF0000003 CUR005 
HOR0000001 3 1 PRF0000004 CUR014 
HOR0000001 4 1 PRF0000005 CUR009 
HOR0000001 5 1 PRF0000006 CUR019 
HOR0000001 1 2 PRF0000001 CUR004 
HOR0000001 2 2 PRF0000003 CUR021 
HOR0000001 3 2 PRF0000004 CUR014 
HOR0000001 4 2 PRF0000005 CUR009 
HOR0000001 5 2 PRF0000006 CUR019 
HOR0000001 1 3 PRF0000001 CUR004 
HOR0000001 2 3 PRF0000003 CUR021 
HOR0000001 3 3 PRF0000004 CUR015 
HOR0000001 4 3 PRF0000005 CUR017 
HOR0000001 5 3 PRF0000007 CUR013 
HOR0000001 1 5 PRF0000002 CUR011 
HOR0000001 2 5 PRF0000004 CUR001 
HOR0000001 3 5 PRF0000004 CUR015 
HOR0000001 4 5 PRF0000005 CUR017 
HOR0000001 5 5 PRF0000007 CUR013 
HOR0000001 1 6 PRF0000002 CUR011 
HOR0000001 2 6 PRF0000004 CUR001 
HOR0000001 3 6 PRF0000005 CUR007 
HOR0000001 4 6 PRF0000006 CUR018 
HOR0000001 5 6 PRF0000007 CUR013 
HOR0000001 1 7 PRF0000003 CUR005 
HOR0000001 2 7 PRF0000004 CUR001 
HOR0000001 3 7 PRF0000005 CUR007 
HOR0000001 4 7 PRF0000006 CUR018 
HOR0000001 5 7 PRF0000007 CUR013 
HOR0000001 1 8 PRF0000003 CUR005 
HOR0000001 2 8 PRF0000004 CUR001 
HOR0000001 3 8 PRF0000005 CUR008 
HOR0000001 4 8 PRF0000006 CUR019 
HOR0000001 5 8 PRF0000007 CUR020 
HOR0000001 1 9 PRF0000003 CUR005 
HOR0000001 2 9 PRF0000004 CUR014 
HOR0000001 3 9 PRF0000005 CUR008 
HOR0000001 4 9 PRF0000008 CUR010 
HOR0000001 5 9 PRF0000007 CUR020 
  #2 (permalink)  
Antiguo 10/08/2009, 21:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Consulta en forma de horario

Te recomiendo trates esto por el lenguaje de programación que uses.

realiza una consulta que te traiga la información requerida en el orden y formato que quieras y organizala desde el sistema para mandarla al reporte.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/08/2009, 14:18
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 2 meses
Puntos: 1
Pregunta Respuesta: Consulta en forma de horario

no...
en si solo necesito hacer la consulta para que me muestre mi detalle
en formato Lunes,Martes,Miercoles... con los cursos y profes q lo dictan como veras solo le voy a enviar el codigo de horario como parametro lo demas son agrupaciones o bueno no se si tambien entra un when case para formar el modelo de consulta que necesito, lo del lenguaje esta de mas, solo no se como comenzar la consulta y agruparlos en dias como columnas y hacer la consulta a las horas y relacionar el profesor con el curso para que cuadre todo

hora Lunes
08:00 - 09:00 Perez
Estadisticas

en si este es el tipo de consulta que necesito pero apartir de mi tabla de arriba, solo quiero la guia para aplicar la consulta en la misma tabla osea sin los join
hora Lunes
08:00 - 09:00 PRF0000001
CUR0000005

GRACIAS
  #4 (permalink)  
Antiguo 11/08/2009, 16:32
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Consulta en forma de horario

Cita:
en si solo necesito hacer la consulta para que me muestre mi detalle en formato Lunes,Martes,Miercoles...
En sí sería lo mismo que un SELECT * FROM....
Lo que te aconsejan es cierto: Sin importar como hagas la consulta, para darle formato de horario semanal, te conviene hacerlo en la aplicación.
Cita:
lo demas son agrupaciones o bueno no se si tambien entra un when case para formar
En realidad no. La consulta de este tipo es mucho más compleja de lo que parece. No son agrupaciones lo que tienes que hacer sino varios JOIN que te deben devolver cada columna de día de semana, para finalmente hacer agrupaciones.... Es demasiado complicado.
Cita:
hora Lunes
08:00 - 09:00 PRF0000001
CUR0000005
Este ejemplo, directamente está fuera de discusión: Es un estilo de reporte que solamente puedes hacer vía aplicación.

En cuanto al otro caso, miralo así:
  • De cada día debe devolverte la asignación en cada horario de cada profesor, y que te devuelva nulos o vacíos donde no haya horarios asignados.
  • Como los horarios se repiten en cada día, pero no las asignaciones, deberás realizar una consulta por cada día para obtener las asignaciones de los diferentes dias.
  • El resultado de cada día debe ser combinado en una tabla con los de los otros días. Esto implicaría el uso de JOIN para unir el resultado de una subconsulta para lunes, otra para el martes y así sucesivamente.
  • La tabla final devolvería, siendo n el numero de registros, n^5 ó n^6 registros, que finalmente deberán ser agrupados, para reducirlos a los necesarios.
  • Esta operación debe hacerse separadamente para obtener los de cada docente, los de cada alumno o los de cada curso... en una sumatoria de consultas casi interminable.
¿Se va entendiendo la idea? El problema es que semejante consulta (que contiene de 5 a 6 subconsultas), será un atentado a la performance de la aplicación.
De allí el consejo de resolverlo en la aplicación, donde se reduciría a recuperar tres tablas y usar dos FOR/NEXT, poco más o menos.

Hazlo en la aplicación...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:43.