Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2019
juniorSoft juniorSoft is offline
Miembro
 
Registrado: abr 2005
Posts: 178
Poder: 20
juniorSoft Va por buen camino
por lo que veo entonces es algo con las condiciones en el where o las condiciones de los Joins

En esta condición filtras las respuestas incorrectas

Código SQL [-]
(((tbl_testCOMPLETADO.miRespuesta)<>[PREGUNTAS].[idRESPOK])

En la siguiente condición teniendo la primera condición quieres igualar una respuesta correcta con las preguntas que ya se filtraron como incorrectas
Código SQL [-]
AND ((RESPUESTAS.idRESP)=Nz([PREGUNTAS].[idRespOK],0))

y si ademas estas condiciones se contradicen con las condiciones de la unión de las tablas puede que no obtengas los resultados que esperas

Lo que te propongo es que depures esa consulta utilizando aquel refrán que dice "Divide y Vencerás".

Has la consulta básica de las preguntas incorrectas si te sale bien, sigue agregando y probando las demás condiciones hasta que encuentres donde esta el problema. Si tienes condiciones excluyentes y cada condición devuelve un conjunto de resultados que te interesa quizás necesites hacer un union. Hacer un select con las primeras condiciones luego union y luego el otro select con las otras condiciones, los campos de ambos select deben coincidir.
Responder Con Cita
  #2  
Antiguo 05-06-2019
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Mostrando el valor del campo de una tabla con DOS posibles valores en DOS columnas

Hola otra vez,

Gracias juniorSoft por haber dedicado parte de tu tiempo...

Hasta las pruebas que he llegado hacer, parece que he ENCONTRADO LA SOLUCION

Buscando, buscando pense que podrian ir los tiros por aqui (ejemplo sacado de: http://www.forosdelweb.com/f86/recup...-tabla-697316/

Una consulta sobre una tabla a la que se ejecuta un JOIN sobre si misma

Código SQL [-]
SELECT alumnos.nif, alumnos.nombre, t1.total totalpendientes
  FROM alumnos INNER JOIN
    (SELECT alumno, COUNT(*) total FROM examenes
      WHERE evaluado = FALSE GROUP BY alumno HAVING total >=1 )t1
         ON alumnos.nif = t1.alumno ORDER BY alumnos.nombre


La cuestion es que, tambien encontre este otro ejemplo en el que me he basado y he conseguido al parecer que funcione para mis objetivos: http://www.forosdelweb.com/f86/dos-c...r-sql-1047898/

Muestra dos columnas con valores diferentes para un mismo campo de una misma tabla

Código SQL [-]
SELECT reparaciones.id, F1.descripcion falla_representante, F2.descripcion falla_tecnicor
FROM reparaciones R 
    INNER JOIN falla F1 on R.falla_representante_ID_falla = F1.ID 
    INNER JOIN falla F2 on R.falla_tecnico_ID_falla = F2.ID

Aplicando digamos los dos ejemplos, la consulta me quedo de la siguiente manera
Por si alguien podria serle de utilidad...

Código SQL [-]
SELECT tblTC.PREGUNTA, RBIEN.OPCION, RMI.OPCION

FROM 

((SELECT RB.OPCION,RB.IDPREG,PB.IDRESPOK FROM (tbl_testCOMPLETADO AS TC INNER JOIN PREGUNTAS AS PB ON TC.idPREG = PB.idPREG) INNER JOIN RESPUESTAS AS RB ON PB.idPREG = RB.idPREG
WHERE tc.idtest=pidtest and rB.idresp=pB.idrespok and tc.miRespuesta <> pb.idrespok GROUP BY RB.OPCION,RB.IDPREG,PB.IDRESPOK)  AS RBIEN INNER JOIN

(SELECT RA.OPCION,RA.IDPREG,PA.IDRESPOK FROM (tbl_testCOMPLETADO AS TC INNER JOIN PREGUNTAS AS PA ON TC.idPREG = PA.idPREG) INNER JOIN RESPUESTAS AS RA ON PA.idPREG = RA.idPREG
WHERE TC.idtest=[pidtest] AND RA.idresp=tc.mirespuesta and tc.miRespuesta<>pa.idrespok GROUP BY RA.OPCION,RA.IDPREG,PA.IDRESPOK)  AS RMI ON RBIEN.IDPREG = RMI.IDPREG) INNER JOIN

tbl_testCOMPLETADO AS tblTC ON RMI.IDPREG = tblTC.IDPREG

GROUP BY tblTC.PREGUNTA, RBIEN.OPCION, RMI.OPCION;


En definitiva, pongo un resumen a groso modo de en lo que consistiria la consulta

Código SQL [-]
SELECT de tblP.Pregunta, RespBien.opcion, MiResp.opcion

FROM (
(select campos from tablaA inner join tablaB) inner join tablaC WHERE condiciones para OPCION CORRECTA GROUP BY campos) as RespBien
INNER JOIN
(select campos from tablaA inner join tablaB) inner join tablaC WHERE condiciones para LA OPCION QUE MARCO EL USUARIO(miRespuesta) GROUP BY campos) as MiResp )
INNER JOIN
tblP

GROUP BY tblP.Pregunta, RespBien.opcion, MiResp.opcion
Responder Con Cita
  #3  
Antiguo 05-06-2019
juniorSoft juniorSoft is offline
Miembro
 
Registrado: abr 2005
Posts: 178
Poder: 20
juniorSoft Va por buen camino
Cita:
Muestra dos columnas con valores diferentes para un mismo campo de una misma tabla
Si también es posible utilizar una misma tabla con diferentes alias.


Veo que haces muchos sub-select, quizas con sql server hace un plan de ejecución pero no se que tan eficiente sea esa consulta en MS-access, quizás puedas hacer pruebas introduciendo muchos registros en esas tablas a ver como responde
Responder Con Cita
  #4  
Antiguo 05-06-2019
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 11
bucanero Va camino a la fama
hola a todos

mira si te puede servir esta consulta:
Código SQL [-]
  SELECT test.idTest,
       test.idpreg,
       pre.PREGUNTA,
       idRESPOK,
       resCorrectas.OPCION AS RespuestaCorrecta,
       miRespuesta,
       resUser.Opcion AS RespuestaUsuario
  FROM (-- test con todas las preguntas
        tbl_testCompletado test
        INNER JOIN tbl_PREGUNTAS pre ON test.idpreg = pre.idpreg)
       -- respuestas correctas
       INNER JOIN tbl_RESPUESTAS resCorrectas ON resCorrectas.idRESP = idRESPOK
       -- respuestas del usuario
       INNER JOIN tbl_RESPUESTAS resUser ON resUser.idRESP = miRespuesta
 WHERE test.idTEst = 1
-- Activar esta opcion para mostrar solo las respuestas incorrectas
-- and idRESPOK <> miRespuesta
Responder Con Cita
Respuesta



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 10:44:10.


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