![]() |
Problema Con Sql De 1 Tabla
Saludos amigos, no soy tan bueno en SQL, tengo una tabla con la siguiente estructura:
Esa tabla almacena los puntajes de los examenes que dan los alumnos del Centro Pre Universitario, normalmente para ingresar los alumnos rinden 4 examenes. tomemos como ejemplo los siguientes registros:
Aqui dice por ejemplo que el alumno identificado con documento nacional de identidad (cedula o dni): 77393424, obtuve una calificacion de 36.4348 en el examen nro 1 (la segunda columna especifica el numero del examen, 1,2,3 o 4). Ahora bien, yo necesito un sql que arroje lo siguiente: NRO DNI EXAMEN1 EXAMEN2 EXAMEN3 EXAMEN4 PROMEDIO Agradezco infinitamente la ayuda que puedan brindarme. Muchas Gracias |
hola,
puedes hacer varias cosas, pero siempre deberás agrupar po dni si quieres mostrarlo en una sola fila. Supongo que usas mysql por la definición de la tabla, y no sé si soportará esto. Opción A: sacar todo de la tabla Opción B: hacer uniones con la tabla y consigo misma para extraer la información. Para que veas cómo puedes hacerlo, y steniendo en cuenta que tu motor de sql puede variar algunas clausulas.
Podrías utilizar esta consulta para unirla con las demás tablas ( datos de usuario, nombre examen...) El gran inconveniente es que si añades examenes, tendrías que cambiar la consulta. Prueba y nos dices. Espero que te haya ayudado. Un saludo |
O usar un procedimiento almacenado en la base de datos.
|
Cita:
Saludos |
Saludos amigos
Después de mucho padecer, llegue a un sql como el siguiente:
Quizas no sea la consulta mas inteligente que haya hecho, pero al menos funciona, si hubieran sugerencias para mejorarla, seria muy interesante. Saludos |
Pero eso sólo saca los datos de una persona, no?
Saludos |
Cita:
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 |
Gracias amigo
Gracias bucanero, la solucion que propones esta mejor que la mia, la tomare.
fjcg02 esa consulta sera parte de un programa en php donde cambiare el parametro duro dni por una variable, de forma que pueda recorrer toda una tabla de postulantes. Gracias a todos por la atencion prestada. ;) |
La franja horaria es GMT +2. Ahora son las 00:18:44. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi