Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2016
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 19
TOPX Va camino a la fama
hola,

Disculpe por hacerle caer en un error, no preví el producto cartesiano entre todos y ellos.

Para arreglarlo, haría lo siguiente:

1. Crear una vista con los usuarios de los ejercicios en común:
Código SQL [-]
CREATE VIEW algunos AS
  SELECT 
    yo.idusuario yo_idusuario, 
    ellos.idusuario ellos_idusuario, 
    ellos.idejercicio ellos_idejercicio
  FROM evaluacion yo 
  INNER JOIN evaluacion ellos 
    ON yo.idejercicio = ellos.idejercicio 
    and yo.idusuario <> ellos.idusuario

2. Usar esa vista para filtrar aparte usuarios y aparte ejercicios:
Código SQL [-]
SELECT DISTINCT 
  todos.idusuario, todos.idejercicio
FROM evaluacion todos
INNER JOIN algunos 
  ON todos.idusuario = algunos.ellos_idusuario
    AND algunos.yo_idusuario = :miusuario
WHERE NOT todos.idejercicio IN (
  SELECT DISTINCT ellos_idejercicio
  FROM algunos
  WHERE yo_idusuario = :miusuario
) 
ORDER BY
  todos.idusuario, todos.idejercicio

3. La misma consulta anterior, pero con mejor plan de ejecución:
Código SQL [-]
SELECT 
  todos.idusuario, todos.idejercicio
FROM evaluacion todos
INNER JOIN (
  SELECT DISTINCT ellos_idusuario
  FROM algunos 
  WHERE yo_idusuario = :miusuario
) algunos
  ON todos.idusuario = algunos.ellos_idusuario
WHERE NOT todos.idejercicio IN (
  SELECT DISTINCT ellos_idejercicio
  FROM algunos
  WHERE yo_idusuario = :miusuario
)
ORDER BY
  todos.idusuario, todos.idejercicio

Las dos consultas fueron probadas en ~ http://sqlfiddle.com/#!9/a4938/2

-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #2  
Antiguo 29-07-2016
oleong oleong is offline
Registrado
NULL
 
Registrado: jul 2016
Posts: 6
Poder: 0
oleong Va por buen camino
gracias voy a probarlo
Responder Con Cita
  #3  
Antiguo 29-07-2016
oleong oleong is offline
Registrado
NULL
 
Registrado: jul 2016
Posts: 6
Poder: 0
oleong Va por buen camino
lo he probado funciona bien pero cuando me devuelve dos ejercicios como recomendacion por ejemplo:

Fibonacci
Primo

si escojo primo para realizarlo luego solo me deberia aparecer Fibonacci, pero me aparece repetido
Fibonacci
Fibonacci

lo pongo aqui

sqlfiddle.com/#!9/a0915/2
Responder Con Cita
  #4  
Antiguo 29-07-2016
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 19
TOPX Va camino a la fama
No está "repetido", la consulta está retornando todos los ejercicios por cada usuario.
A partir de ella podría sacar "usuarios que respondieron los mismos ejercicios" ó "ejercicios que también respondieron otros usuarios", etc.; falta interpretación por su parte.
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #5  
Antiguo 29-07-2016
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 19
TOPX Va camino a la fama
Mayor información en:

-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
Respuesta


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 para contar registros jafera Firebird e Interbase 2 24-02-2011 17:48:39
Consulta En Access Para Devolver Varios Registros En Un Solo Renglon palets SQL 3 11-02-2009 23:47:10
Omitir texto en window.print() D-MO HTML, Javascript y otros 4 22-01-2006 05:49:46
Omitir limpieza de cabezal de impresora emeceuy Impresión 5 06-08-2005 05:07:47
Consulta para ver registros duplicados MarcoMae SQL 2 30-03-2005 18:40:43


La franja horaria es GMT +2. Ahora son las 21:12:21.


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