Ayuda con una consulta, pleaseeeeeeee
Publicado por Sonya (1 intervención) el 05/07/2006 11:09:28
Buenas!!!
Tengo un pequeño gran problema con una consulta que no hace más que darme dolores de cabeza. A ver si hay alguien que pueda ayudarme.
La cuestión es la siguiente.
Tengo 4 tablas:
tabla "resultados"
* codigo
* resultado
tabla "tema"
* codigo
* tiempo_estimado
tabla "pregunta":
* codigo
* tema_id (FK tema.codigo)
* test_id (FK test.codigo)
* tiempo_ejecutado
* alumno (FK alumno.codigo)
* resultado (FK resultado.resultado)
tabla "alumno":
* codigo
* nombre
tabla "test"
* codigo
* comienzo_previsto
* comienzo
* fin_previsto
* fin
En la tabla pregunta, el campo resultado ha de ser uno de los registros de la tabla resultado, es decir, si en la tabla resultado tengo:
1- (en blanco)
2- NS/SC
3- Si
4- No;
en un registro cualquiera de la tabla pregunta, en el campo resultado ha de haber "", "pasado", "aviso" o "problema"
Sabiendo esto, lo que necesito sería:
Hacer una consulta que me diga cuantas preguntas hay que tengan cada respuesta, agrupándolas a su vez dependiendo del test en el que estén incluidas y del alumno que la haya respondido.
Sería algo así como:
Test Alumno totalPreguntas (blanco) NS/NC Si No
Primav05 Alicia 150 0 5 105 40
Primav05 Juan 150 150 0 0 0
Primav05 Pedro 150 3 7 70 70
Verano05 Alicia 70 5 5 15 45
Verano05 Juan 70 0 0 30 40
Verano05 Pedro 70 150 0 0 0
Así pues, si todas las preguntas de un test, para ese alumno, están en blanco, significa que ese test no se ha realizado.
Bueno, a ver si alguien puede echarme un cable porque ya no se que probar. Os pongo lo que yo hice, conseguí que funcionara solo que yo necesito que salgan todos los resultados, y en cambio solo aparecian los que tenian algún resultado, es decir, que si no había ninguna pregunta con Si, esa columna no aparecía.
La consulta es:
SELECT test.comienzo_prev, test.comienzo, test.fin_prev, test.fin, Sum(pregunta.tiempoEjecutado) AS SumaTiempoEjecutado, Sum(tema.tiempoEstimado) AS SumaTiempoEstimado, pregunta.alumno, pregunta.resultado, test.codigo, Count(pregunta.codigo) AS CuentaPreguntas
FROM test INNER JOIN (tema INNER JOIN pregunta ON tema.codigo=pregunta.tema_id) ON test.codigo=pregunta.test_id
GROUP BY test.comienzo_prev, test.comienzo, test.fin_prev, test.fin, pregunta.alumno, pregunta.result, test.codigo;
Gracias por anticipado!!!
Wink
PD: Siento ser tan pesada, acabo de ver el mensaje y es larguíiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisimo!!! Jajajajaja
Tengo un pequeño gran problema con una consulta que no hace más que darme dolores de cabeza. A ver si hay alguien que pueda ayudarme.
La cuestión es la siguiente.
Tengo 4 tablas:
tabla "resultados"
* codigo
* resultado
tabla "tema"
* codigo
* tiempo_estimado
tabla "pregunta":
* codigo
* tema_id (FK tema.codigo)
* test_id (FK test.codigo)
* tiempo_ejecutado
* alumno (FK alumno.codigo)
* resultado (FK resultado.resultado)
tabla "alumno":
* codigo
* nombre
tabla "test"
* codigo
* comienzo_previsto
* comienzo
* fin_previsto
* fin
En la tabla pregunta, el campo resultado ha de ser uno de los registros de la tabla resultado, es decir, si en la tabla resultado tengo:
1- (en blanco)
2- NS/SC
3- Si
4- No;
en un registro cualquiera de la tabla pregunta, en el campo resultado ha de haber "", "pasado", "aviso" o "problema"
Sabiendo esto, lo que necesito sería:
Hacer una consulta que me diga cuantas preguntas hay que tengan cada respuesta, agrupándolas a su vez dependiendo del test en el que estén incluidas y del alumno que la haya respondido.
Sería algo así como:
Test Alumno totalPreguntas (blanco) NS/NC Si No
Primav05 Alicia 150 0 5 105 40
Primav05 Juan 150 150 0 0 0
Primav05 Pedro 150 3 7 70 70
Verano05 Alicia 70 5 5 15 45
Verano05 Juan 70 0 0 30 40
Verano05 Pedro 70 150 0 0 0
Así pues, si todas las preguntas de un test, para ese alumno, están en blanco, significa que ese test no se ha realizado.
Bueno, a ver si alguien puede echarme un cable porque ya no se que probar. Os pongo lo que yo hice, conseguí que funcionara solo que yo necesito que salgan todos los resultados, y en cambio solo aparecian los que tenian algún resultado, es decir, que si no había ninguna pregunta con Si, esa columna no aparecía.
La consulta es:
SELECT test.comienzo_prev, test.comienzo, test.fin_prev, test.fin, Sum(pregunta.tiempoEjecutado) AS SumaTiempoEjecutado, Sum(tema.tiempoEstimado) AS SumaTiempoEstimado, pregunta.alumno, pregunta.resultado, test.codigo, Count(pregunta.codigo) AS CuentaPreguntas
FROM test INNER JOIN (tema INNER JOIN pregunta ON tema.codigo=pregunta.tema_id) ON test.codigo=pregunta.test_id
GROUP BY test.comienzo_prev, test.comienzo, test.fin_prev, test.fin, pregunta.alumno, pregunta.result, test.codigo;
Gracias por anticipado!!!
Wink
PD: Siento ser tan pesada, acabo de ver el mensaje y es larguíiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisimo!!! Jajajajaja
Valora esta pregunta


0