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

consulta mysql

Estas en el tema de consulta mysql en el foro de Mysql en Foros del Web. hola buenas acudo a este foro porque tengo una duda con un proyecto lo que pasa es que necesito listar todas las calificaciones(notas) de un ...
  #1 (permalink)  
Antiguo 08/09/2013, 22:00
 
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
consulta mysql

hola buenas acudo a este foro porque tengo una duda con un proyecto

lo que pasa es que necesito listar todas las calificaciones(notas) de un alumno de las asignaturas que tiene

esta es la estructura de las tablas

-alumno ( tiene los datos del alumno incluyendo su PK)
-notas ( contiene las notas por asignatura (FK asignatura) ingresadas asociadas a un alumno (FK a alumno))
-Asignaturas (contiene todas las asignaturas que se imparten)

entonces mi pregunta es como lo puedo hacer para que me liste todas notas por asignatura que tiene un alumno
ejemplo:
asignatura1->nota1,nota2,nota3 etc
asignatura2->nota1,nota2,nota3 etc etc

agradeciendo su disposicion
  #2 (permalink)  
Antiguo 09/09/2013, 07:24
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: consulta mysql

en ese caso, las 3 tablas deben estar relacionadas entre si, y de esa manera te sera mas util poder relacionarlas usando la sintaxis inner join....

saludos...
__________________
Lo que no se....tampoco creo saberlo....
  #3 (permalink)  
Antiguo 09/09/2013, 07:46
Avatar de fenix4  
Fecha de Ingreso: noviembre-2001
Ubicación: Caracas
Mensajes: 226
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: consulta mysql

SELECT a.alumno, b.asignatura, c.nota
FROM alumnos AA a
LEFT JOIN asignaturas AS b ON (a.id_alumno = b.id_alumno)
LEFT JOIN notas AS c (a.id_alumno = c.id_alumno) ;

Allí te debería traer todos los estudiantes, con las materias que tenga, y las notas que tenga.

Ahora si quieres que salgan así:
asignatura1->nota1,nota2,nota3 etc
asignatura2->nota1,nota2,nota3 etc etc

Yo haría una consulta cruzada o me traería cada columna con un CASE y quedaría algo así en la vista.
Alumno 1, asignatura 1, nota 1, nota 2, ...
Alumno 1, asignatura 2, nota 1, nota 2, ...
Alumno 1, asignatura 3, nota 1, nota 2, ...
Alumno 2, asignatura 1, nota 1, nota 2, ...
Alumno 2, asignatura 2, nota 1, nota 2, ...
Alumno 2, asignatura 2, nota 1, nota 2, ...
....

Pero yo prefiero organizar los datos del lado de la aplicación.
__________________
S.L.P.S.
  #4 (permalink)  
Antiguo 09/09/2013, 15:27
 
Fecha de Ingreso: agosto-2013
Mensajes: 3
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: consulta mysql

Cita:
Iniciado por fenix4 Ver Mensaje
SELECT a.alumno, b.asignatura, c.nota
FROM alumnos AA a
LEFT JOIN asignaturas AS b ON (a.id_alumno = b.id_alumno)
LEFT JOIN notas AS c (a.id_alumno = c.id_alumno) ;

Allí te debería traer todos los estudiantes, con las materias que tenga, y las notas que tenga.

Ahora si quieres que salgan así:
asignatura1->nota1,nota2,nota3 etc
asignatura2->nota1,nota2,nota3 etc etc

Yo haría una consulta cruzada o me traería cada columna con un CASE y quedaría algo así en la vista.
Alumno 1, asignatura 1, nota 1, nota 2, ...
Alumno 1, asignatura 2, nota 1, nota 2, ...
Alumno 1, asignatura 3, nota 1, nota 2, ...
Alumno 2, asignatura 1, nota 1, nota 2, ...
Alumno 2, asignatura 2, nota 1, nota 2, ...
Alumno 2, asignatura 2, nota 1, nota 2, ...
....

Pero yo prefiero organizar los datos del lado de la aplicación.

como seria eso de la consulta cruzada?

Etiquetas: tabla
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 22:06.