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

Consulta Multitablas (Mas de 3 Ala Vez)

Estas en el tema de Consulta Multitablas (Mas de 3 Ala Vez) en el foro de Mysql en Foros del Web. Bueno me estoy matando con una consulta que no puedo hacer, haber si alguien me puede orientar. Tengo 4 Tablas Alumno, Primer_Semestre,Segundo_Semestre,Cuarto_Semestre Todas tienen NumClave, ...
  #1 (permalink)  
Antiguo 06/06/2006, 21:29
 
Fecha de Ingreso: enero-2005
Mensajes: 50
Antigüedad: 19 años, 4 meses
Puntos: 0
Consulta Multitablas (Mas de 3 Ala Vez)

Bueno me estoy matando con una consulta que no puedo hacer, haber si alguien me puede orientar.

Tengo 4 Tablas
Alumno, Primer_Semestre,Segundo_Semestre,Cuarto_Semestre
Todas tienen NumClave, La de Alumno tiene varios campos nombre,edad, direccion etc, y la de los semestres tienen materia1,mat2,mat3, etc donde se guarda su calificacion.

Lo que necesito es una consulta que me muestre el alumno y todas las calificaciones que tenga hasta el momento.
Alumno

NumClave Nombre ------Campos
1 Juan
2 Pedro
3 Maria

Primer_Semestre
NumClave Materia1 Materia2 Materia3 Materia4 (Estos son los campos)
1 10 9 8 7
2 9 7 8 9
3 8 7 8 7

Segundo_Semestre
NumClave Materia1 Materia2 Materia3 Materia4
1 10 9 8 7
2 6 9 7 9

Tercer_Semestre
NumClave Materia1 Materia2 Materia3 Materia4
1 10 9 8 7
2 9 7 6 9

Cuarto_Semestre
NumClave Materia1 Materia2 Materia3 Materia4
1 8 7 8 6

Si nos damos cuenta solo el alumno con clave 1 tiene calificaciones hasta en sus 4 semestres, el numero 2 solo tiene el primer y segundo semestre y el 3 solo tiene el primer_semestre, lo que necesito es una consulta que saque las calificaciones que tenga hasta ese momento, si se manda el parametro numclave=2 saque las calificaciones de sus 2 semestres.

Por mas que lo intento solo me devuelve valores cuanto a la persona se le han capturado todos sus semestres.
  #2 (permalink)  
Antiguo 08/06/2006, 08:16
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Y cual es la consulta sql?
Por que separar en 4 tablas distintas en lugar de colocar un campo que indique el semestre?
  #3 (permalink)  
Antiguo 08/06/2006, 09:03
 
Fecha de Ingreso: enero-2006
Mensajes: 22
Antigüedad: 18 años, 3 meses
Puntos: 0
Como apuntaba claudiovega, el diseño de la base de datos está mal, de ahí que se te complica tanto a la hora de consultar. Deberías haber creado una única tabla y un campo que indicase el semestre.
De todas formas, si no puedes rediseñar la estructura de la base de datos, cosa realmente conveniente créeme, podrias coger los valores de las 4 tablas haciendo UNION.
(select materia1,materia2,materia3,materia4 from Primer_Semestre)
union
(select materia1,materia2,materia3,materia4 from Segundo_Semestre)
union
etc,etc....
  #4 (permalink)  
Antiguo 08/06/2006, 09:58
 
Fecha de Ingreso: enero-2005
Mensajes: 50
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola que tal gracias por sus comentarios la verdad es que si la estructura de las tablas quisas no es la mejor pero asi me la pidieron y no la puedo cambiar, ahora realmente no creo poder hacer mi consulta con union puesto que no todas mis tablas de semestres tienen la misma cantidad de materias ya se que en el ejemplo que puse asi es ademas los campos "materia1","materia2", de cada tabla realmente no se llaman asi solo lo puse aqui como referencia, realmente los campos de las tablas son por ejemplo: matematicas I, Programacion II, etc, nunca se repiten los nombres en ningun semestre.

Aqui les pongo una sentencia que solo me da resultados si tengo llenas las calificaciones de todos los semestres del alumno(que son 6 realmente), la consulta es para SQL de Acces pues estoy trabajando en un proyecto con VB.
Y como les digo NumerControl es la variable que lleva el valor de la clave del alumno y si este no tiene capturados los 6 semestres no sale nada, si si los tiene arroja todas sus calificaciones lo e intentado tanto con AND y OR en el where y no resulta, puesto que lo que yo quiero es que me arroje calificaciones aun si solo se le han capturado 1,2,3,4,5 semestres.

Código:
sentencia = "SELECT Alumno.*, Primer_Semestre.*, Segundo_Semestre.*, Tercer_Semestre.*, Cuarto_Semestre.*, Quinto_Semestre.*, Sexto_Semestre.* FROM Alumno, Primer_Semestre, Segundo_Semestre, Tercer_Semestre, Cuarto_Semestre, Quinto_Semestre, Sexto_Semestre where Alumno.NumControl= " & NumerControl & " and Primer_Semestre.Numctl= Alumno.NumControl and Primer_Semestre.Numctl = " & NumerControl & " And Segundo_Semestre.Numctl = " & NumerControl & " And Tercer_Semestre.Numctl = " & NumerControl & " And Cuarto_Semestre.Numctl = " & NumerControl & " And Quinto_Semestre.Numctl = " & NumerControl & " And Sexto_Semestre.Numctl = " & NumerControl & ""
  #5 (permalink)  
Antiguo 08/06/2006, 11:38
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Usa union:

Código:
sentencia = " SELECT A.*, PS.* FROM Alumno A,Primer_Semestre PS WHERE PS.Numctl=" & NumerControl
sentencia = sentencia & " UNION"
sentencia = sentencia & " SELECT A.*, SS.* FROM Alumno A,Segundo_Semestre PS WHERE PS.Numctl=" & NumerControl
sentencia = sentencia & " UNION"
sentencia = sentencia & " SELECT A.*, TS.* FROM Alumno A,Tercer_Semestre PS WHERE TS.Numctl=" & NumerControl
sentencia = sentencia & " UNION"
sentencia = sentencia & " SELECT A.*, SS.* FROM Alumno A,Cuarto_Semestre CS WHERE PS.Numctl=" & NumerControl
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 23:48.