Ver Mensaje Individual
  #7  
Antiguo 13-05-2015
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Cita:
Empezado por darkamerico Ver Mensaje
Después de mucho padecer, llegue a un sql como el siguiente:

Código SQL [-]
SELECT postulante_puntaje.dni, postulante_puntaje.idescuela_fk, postulante_puntaje.puntaje as p1,
(SELECT postulante_puntaje.puntaje
FROM postulante_puntaje
WHERE postulante_puntaje.idexamen_fk = 2 AND
      postulante_puntaje.dni = '74360500') as p2,
(SELECT postulante_puntaje.puntaje
 FROM postulante_puntaje
WHERE postulante_puntaje.idexamen_fk = 3 AND
      postulante_puntaje.dni = '74360500') as p3,
(SELECT postulante_puntaje.puntaje
FROM postulante_puntaje
WHERE postulante_puntaje.idexamen_fk = 4 AND
      postulante_puntaje.dni = '74360500') as p4
FROM postulante_puntaje
WHERE postulante_puntaje.idexamen_fk = 1 AND
      postulante_puntaje.dni = '74360500'

Quizas no sea la consulta mas inteligente que haya hecho, pero al menos funciona, si hubieran sugerencias para mejorarla, seria muy interesante.

Saludos
una forma de simplificar, o por lo menos que sea un poco mas legible esta consulta podría ser esta:

Código SQL [-]
SELECT p1.dni, p1.idescuela_fk, p1.puntaje as p1, p2.puntaje, p3.puntaje, p4.puntaje
FROM postulante_puntaje p1
LEFT JOIN postulante_puntaje p2 ON p2.idexamen_fk = 2 and p2.dni = p1.dni and p2.idescuela_fk=p1.idescuela_fk
LEFT JOIN postulante_puntaje p3 ON p3.idexamen_fk = 3 and p3.dni = p1.dni and p3.idescuela_fk=p1.idescuela_fk
LEFT JOIN postulante_puntaje p4 ON p4.idexamen_fk = 4 and p4.dni = p1.dni and p4.idescuela_fk=p1.idescuela_fk
WHERE p1.idexamen_fk = 1 AND
      p1.dni = '74360500'

En principio si se garantiza que ya están insertadas las cuatro notas, en vez de realizar la agrupación de las tablas con LEFT JOIN se puede realizar con INNER JOIN y la consulta se ejecutara mas rápido en el servidor, pero si no es posible garantizar este punto, entonces se utilizara el LEFT JOIN o de lo contrario no devolverá los resultados que les falte alguna de las notas


saludos
Responder Con Cita