Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   consulta horario de clases mysql (https://www.clubdelphi.com/foros/showthread.php?t=77607)

gulder 10-02-2012 17:11:35

consulta horario de clases mysql
 
hola aforo como estas espero que bien

bueno aquí molestándolos un poco resulta que tengo las siguientes tablas asignaturas y horario sus estructuras son las siguientes





despues de hacer esta consulta


me retorna los siguientes valores


hasta hay todo bien el problema que tengo es que en el horario no quiero que me muestre el id de la asignatura en los dias del horario si no el nombre de la asignatura a que corresponde ese id, pero no se como hacerle a la consulta espero alguna ayuda de parte de ustedes cordialmente gulder

oscarac 10-02-2012 18:03:17

yo te recomiendo usar JOINS

algo asi como esto

Código Delphi [-]
 
Select T1.Campos, T2.Campos, T3.Campos
from Tabla1 t1
Left JOIN Tabla2 T2 on T1.CampoComun = T2.CamopComun
Left JOIN Tabla3 T3 on T2.CampoComun = T3.CampoComun
where....

es mucho mas ordenado que invocar a todas las tablas en el from

gulder 10-02-2012 18:18:38

oscarac gracias por responder, me tocaria leer un poco pues la verdad no se usar los JOIN gracias men

oscarac 10-02-2012 18:23:55

Cita:

Empezado por gulder (Mensaje 424791)
oscarac gracias por responder, me tocaria leer un poco pues la verdad no se usar los JOIN gracias men

es sencillo, se trata basicamente de "relacionar", "unir", "traer" los datos de una o mas tablas en una consulta
y las "unes" en funcion al campo en comun

busca informacion sobre eso.. veras que es facil

gulder 10-02-2012 18:52:52

listo men gracias muy agradecido

oscarac 10-02-2012 18:55:00

Cita:

Empezado por gulder (Mensaje 424798)
listo men gracias muy agradecido

si lo resolviste o cuando lo resuelvas.....

seria bueno que coloques la solucion.. para que alguien mas pueda verlo en caso tenga un problema pareido

gulder 10-02-2012 19:10:33

listo no hay problema, no le he resuelto desde la consulta lo resolví desde el programa utilizando una tabla y un vector, recurriendo cada id e intercambiándolo en una tabla, pero no me parece la mejor solución por tal motivo estoy investigando hacerlo desde la misma consulta gracias men

roman 10-02-2012 19:24:34

Y ¿por qué no te ha salido en la consulta?

Según entiendo, cada campo lunes, martes, miercoles, jueves, viernes es el ID de una asignatura. Entonces, lo que tienes que hacer es un join por cada día con la tabla de asignaturas, usando alias:

Código SQL [-]
select
  ...
  LU.nombre_asignatura, MA.nombre_asignatura, MI.nombre_asignatura, JU.nombre_asignatura, VI.nombre_asignatura,
  ...
from ...
...
left join asignatura LU on LU.id_asignatura = horario.lunes
left join asignatura MA on MA.id_asignatura = horario.martes
left join asignatura MI on MI.id_asignatura = horario.miercoles
left join asignatura JU on JU.id_asignatura = horario.jueves
left join asignatura VI on VI.id_asignatura = horario.viernes
...

Por cierto, viernes se escribe con s al final.

// Saludos

gulder 10-02-2012 19:26:55

roman claro que si cada lunes , martes, miercoles es id de asignatura, voy a probar lo que dices aver que tal, :) gracias por corregirme el error de escritura en viernes saludos

gulder 10-02-2012 19:50:03

ya esta la solucion

Código:

SELECT horario.Hora,horario.Inicio,horario.fin,horario.duracion,
      LU.nombre_asignatura,MA.nombre_asignatura,MI.nombre_asignatura,JU.nombre_asignatura,VI.nombre_asignatura
FROM sede,jornada,grado,horario
left join asignaturas LU on LU.id_asignatura = horario.lunes
left join asignaturas MA on MA.id_asignatura = horario.martes
left join asignaturas MI on MI.id_asignatura = horario.miercoles
left join asignaturas JU on JU.id_asignatura = horario.jueves
left join asignaturas VI on VI.id_asignatura = horario.viernez
WHERE horario.id_sede ='24' AND
horario.id_jornada ='0' AND
horario.id_grado ='4'
AND horario.grupo ='1'
GROUP BY horario.Hora, horario.Inicio, horario.fin, horario.duracion, horario.lunes, horario.martes, horario.miercoles, horario.jueves, horario.viernez, horario.sabado, horario.domingo
ORDER BY horario.ids



roman 10-02-2012 20:21:24

Para que quede más bonito, puedes usar alias también para los nombres de los campos:

Código SQL [-]
select
  ...
  LU.nombre_asignatura lunes, MA.nombre_asignatura martes, MI.nombre_asignatura miercoles ...
  ...
from ...

// Saludos

gulder 11-02-2012 16:20:56

es correcto gracias roman muy amable

gulder 11-02-2012 21:52:16

ahora tengo la siguiente tabla carga academica y quiero seleccionar del horario solo las materias en las que un determinado docente dicta clases osea el horario por docente




con esta consulta que coloco a continuación me trae las amterias de dicho profesor para el dia miercoles, pero tengo dos problemas el primero no se como hacerle para que me los traiga para todos los dias y segundo, me trae las materias que no corresponden al profesor no se como encarar este problema espero sugerencias

Código SQL [-]
SELECT  horario.Hora,
        IFNULL(LU.nombre_asignatura,'RECREO'),
        IFNULL(MA.nombre_asignatura,'RECREO'),
        IFNULL(MI.nombre_asignatura,'RECREO'),
        IFNULL(JU.nombre_asignatura,'RECREO'),
        IFNULL(VI.nombre_asignatura,'RECREO'),
        IFNULL(SA.nombre_asignatura,'RECREO'),
        IFNULL(DM.nombre_asignatura,'RECREO')

FROM cargaacademica,horario

LEFT JOIN asignaturas AS LU ON LU.id_asignatura = horario.lunes
LEFT JOIN asignaturas AS MA ON MA.id_asignatura = horario.martes
LEFT JOIN asignaturas AS MI ON MI.id_asignatura = horario.miercoles
LEFT JOIN asignaturas AS JU ON JU.id_asignatura = horario.jueves
LEFT JOIN asignaturas AS VI ON VI.id_asignatura = horario.viernez
LEFT JOIN asignaturas AS SA ON SA.id_asignatura = horario.sabado
LEFT JOIN asignaturas AS DM ON DM.id_asignatura = horario.domingo

WHERE horario.id_sede = cargaacademica.id_sede AND
      horario.id_jornada = cargaacademica.id_jornada AND
      horario.id_grado = cargaacademica.id_grado AND
      horario.Grupo = cargaacademica.grupo AND
                        horario.miercoles = cargaacademica.id_asignatura AND
      cargaacademica.cedula = '383889'

Casimiro Notevi 11-02-2012 23:03:19

Recuerda nuestra guía de estilo, preguntas distintas en hilos distintos, crea uno nuevo, gracias.

Ya que habías solucionado la anterior pregunta, voy a cerrar el tema, si algún moderador lo cree conveniente, que lo abra de nuevo.


La franja horaria es GMT +2. Ahora son las 14:12:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi