Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

consultas anidadas

Estas en el tema de consultas anidadas en el foro de Bases de Datos General en Foros del Web. Hola muy buenos dias. Estoy un poco enroscando en una consulta que me parece que se puede resolver mas sencilla pero no encuentro la manera ...
  #1 (permalink)  
Antiguo 18/12/2016, 14:05
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 11 años, 6 meses
Puntos: 0
consultas anidadas

Hola muy buenos dias. Estoy un poco enroscando en una consulta que me parece que se puede resolver mas sencilla pero no encuentro la manera

Les adjunto mi diadrama:


Mi sql:

Código SQL:
Ver original
  1. SELECT DISTINCT M.ID_MODULO,
  2.                                        M.ID_CURSO,
  3.                                        M.MODULO_NUMERACION,
  4.                                        M.MODULO_TITULO,
  5.                                        M.MODULO_DESCRIPCION_CORTA
  6.                                   FROM modulo M
  7.                        
  8.                         INNER JOIN (SELECT DISTINCT ID_MODULO,
  9.                                                     ID_ACTIVIDAD
  10.                                                FROM actividad) A ON M.ID_MODULO = A.ID_MODULO
  11.                        
  12.                         LEFT JOIN resolucion_actividad ra ON A.ID_ACTIVIDAD = ra.ID_ACTIVIDAD
  13.  
  14.                         WHERE 1=1
  15.                        
  16.                         AND M.ID_CURSO = $id_curso
  17.                         AND M.ID_MODULO NOT IN (SELECT DISTINCT M.ID_MODULO
  18.                         FROM modulo M
  19.                         INNER JOIN (SELECT DISTINCT ID_MODULO, ID_ACTIVIDAD FROM actividad) A ON M.ID_MODULO = A.ID_MODULO
  20.                         LEFT JOIN resolucion_actividad ra ON A.ID_ACTIVIDAD = ra.ID_ACTIVIDAD
  21.                        
  22.                         WHERE 1=1
  23.                        
  24.                         AND M.ID_CURSO = $id_curso
  25.  
  26.                         AND ra.ID_RESOLUCION_ACTIVIDAD IS NOT NULL)

Lo que necesito es. Mostrar los modulos (de un determinado cliente) que sus actividades no tienen resolucion. Si tiene alguna resolucion, lo oculta

Si alguien me puede ayudar me haria un favor. Aclaro que esto esta funcionando bien pero se me hizo una consulta enorme para un dato bastante sencillo. Capaz algun encuentra una mejor solucion

Última edición por gnzsoloyo; 19/12/2016 a las 12:49
  #2 (permalink)  
Antiguo 20/12/2016, 10:00
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: consultas anidadas

Fíjate si te sirve y funciona:

Código SQL:
Ver original
  1. SELECT
  2.   m.id_modulo,
  3.   m.id_curso,
  4.   m.modulo_numeracion,
  5.   m.modulo_titulo,
  6.   m.modulo_descripcion_corta
  7. FROM
  8.   modulo AS m
  9. JOIN
  10.   actividad AS a ON m.id_modulo = a.id_modulo
  11. WHERE
  12.   m.id_curso = $id_curso AND
  13.   a.id_actividad NOT IN (SELECT DISTINCT id_actividad FROM resolucion_actividad)

Etiquetas: anidadas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:29.