Hola,
quisiera pediros ayuda en una consulta sql que no consigo resolver y que no se si podria ejecutarse
tengo tres tablas
[tbl_PREGUNTAS]
idPREG
PREGUNTA
idRESPok
[tbl_RESPUESTAS]
idRESP
idPREG
OPCION
[tbl_testCOMPLETADO]
idTEST
idPREG
miRespuesta
La cuestion es que estoy intentando ejecutar una consulta, donde me de como resultado, las preguntas mal respondidas de un test en cuestion, mostrandome a su vez, la opcion correcta y la opcion incorrecta que yo marque en el test
En el programa, muestro un test de N preguntas con sus correspondientes respuestas (4 opciones) y para cada pregunta, el usuario selecciona la respuesta que almaceno como miRespuesta en tbl_TESES
A su vez, previamente hemos marcado en la base de datos, la respuesta correcta a cada pregunta a traves del campo idRESPok en la tabla tbl_PREGUNTAS
Poniendo un ejemplo,
tbl_PREGUNTAS
idPREG - PREGUNTA - idRESPok
-----------------------------------------------------
1 - Preg 1 - 3
2 - Preg 2 - 5
3 - Preg 3 - 10
tbl_RESPUESTAS
idRESP - idPREG - OPCION
-----------------------------------------------------
1 - 1 - a:Respuesta a, preg 1
2 - 1 - b:Respuesta b, preg 1
3 - 1 - c:Respuesta c, preg 1
4 - 1 - d:Respuesta d, preg 1
5 - 2 - a:Respuesta a, preg 2
6 - 2 - b:Respuesta b, preg 2
7 - 2 - c:Respuesta c, preg 2
8 - 2 - d:Respuesta d, preg 2
9 - 3 - a:Respuesta a, preg 3
10 - 3 - b:Respuesta b, preg 3
11 - 3 - c:Respuesta c, preg 3
12 - 3 - d:Respuesta d, preg 3
tbl_testCOMPLETADO
idTEST - idPREG - miRespuesta
---------------------------------------------------------
1 - 1 - 2
1 - 2 - 6
1 - 3 - 10
El resultado que quisiera obtener seria (preguntas mal respondidas de un test con la opcion correcta e incorrecta):
PREGUNTA OPCION(Bien) OPCION(Mal)
------------------------------------------------------------------------
Preg 1 c:Respuesta c, preg 1 b:Respuesta b, preg 1
Preg 2 a:Respuesta a, preg 2 b:Respuesta b, preg 2
Nota: la pregunta 3 no se mostraria, porque en el test marcamos la opcion correcta
Consigo sacar sin problemas las respuestas mal respondidas, mostrando la opcion correcta, pero me es imposible añadir el campo opcion incorrecta
Consulta que me funciona para mostrar solo la opcion correcta
Código SQL
[-]PARAMETERS pIDTest Text ( 255 );
SELECT PREGUNTAS.PREGUNTA, RESPUESTAS.OPCION, PREGUNTAS.idRESPOK, tbl_testCOMPLETADO.miRespuesta, RESPUESTAS.idRESP
FROM (PREGUNTAS INNER JOIN tbl_testCOMPLETADO ON PREGUNTAS.idPREG = tbl_testCOMPLETADO.idPREG) INNER JOIN RESPUESTAS ON PREGUNTAS.idPREG = RESPUESTAS.idPREG
WHERE (((tbl_testCOMPLETADO.miRespuesta)<>[PREGUNTAS].[idRESPOK]) AND ((RESPUESTAS.idRESP)=Nz([PREGUNTAS].[idRespOK],0)) AND ((tbl_testCOMPLETADO.idTest)=[pIDTest]));
Consulta que intento obtener sin exito para mostrar opcion incorrecta
Código SQL
[-]PARAMETERS pIDTest Text ( 255 );
SELECT PREGUNTAS.PREGUNTA, RESPUESTAS.OPCION AS Correcta, PREGUNTAS.idRESPOK, tbl_testCOMPLETADO.miRespuesta, RESPUESTAS.idRESP, malResp.Incorrecta
FROM ((PREGUNTAS INNER JOIN tbl_testCOMPLETADO ON PREGUNTAS.idPREG = tbl_testCOMPLETADO.idPREG) INNER JOIN RESPUESTAS ON PREGUNTAS.idPREG = RESPUESTAS.idPREG),
(SELECT RESPUESTAS.OPCION AS Incorrecta
FROM (RESPUESTAS INNER JOIN tbl_testCOMPLETADO ON RESPUESTAS.idPREG=tbl_testCOMPLETADO.idPREG) inner join preguntas on preguntas.idpreg =respuestas.idpreg
WHERE preguntas.idrespok <> tbl_testcompletado.miRespuesta AND tbl_testCOMPLETADO.idTEST = [pIDTest] AND RESPUESTAS.idRESP = tbl_testCOMPLETADO.miRespuesta) AS malResp
WHERE (((tbl_testCOMPLETADO.miRespuesta)<>[PREGUNTAS].[idRESPOK]) AND ((RESPUESTAS.idRESP)=Nz([PREGUNTAS].[idRespOK],0)) AND ((tbl_testCOMPLETADO.idTest)=[pIDTest]))
Con esto, el resultado que obtengo es por ejemplo:
PREGUNTA OPCION(Bien) OPCION(Mal)
-------------------------------------------------------------------
Preg 1 c: Respuesta c, Preg 1 b:Respuesta b, preg 1
Preg 1 c: Respuesta c, Preg 1 b:Respuesta b, preg 2
Preg 2 a:Respuesta a, preg 2 b:Respuesta b, preg 1
Preg 2 a:Respuesta a, preg 2 b:Respuesta b, preg 1
Espero haberme explicado,
Agradezco vuestra ayuda de antemano