Club Delphi  
    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 Temas de Hoy

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: 17
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: 17
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: 17
TOPX Va camino a la fama
Mayor información en:

-
__________________
"constructive mind, destructive thoughts"
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 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 14:04:38.


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