Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 3 Semanas
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 16
jsc Va por buen camino
Arrow consulta sql compleja

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
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta demasiado compleja oscarac SQL 7 10-03-2011 14:46:16
Consulta sql Compleja oca SQL 9 21-04-2008 16:39:22
Consulta ¿compleja? salvica SQL 4 13-01-2008 20:03:09
Consulta compleja Jesús Pena SQL 3 19-07-2007 07:54:40
consulta SQL que me resulta compleja j2mg SQL 5 29-05-2003 22:50:13


La franja horaria es GMT +2. Ahora son las 03:53:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi