Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2014
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
Thumbs up listar registros que estan en una tabla que no estan en otra

cordial saludo foro como andan espero que bien, mi pregunta es tengo dos tablas necesito sacar los datos de una tabla que no están en la otra pero que cumplan con varias condiciones les explico mejor, esta son las tablas en cuestión:


lo que quiero es traer las filas de la tabla carga académica que no están en periodos_calificados para un año lectivo y periodo especifico, también debe cumplir con id_sede,id_jornada,id_grado,grupo havia intentado esto pero no ,e resulta



Código SQL [-]
SELECT cargaacademica.id_asignatura,
       cargaacademica.id_sede,
       cargaacademica.id_jornada,
       cargaacademica.id_grado,
       cargaacademica.grupo
FROM cargaacademica

LEFT OUTER JOIN periodos_calificados

ON    cargaacademica.id_asignatura = periodos_calificados.id_asignatura and
      cargaacademica.id_sede = periodos_calificados.id_sede  and
      cargaacademica.id_jornada = periodos_calificados.id_jornada and
      cargaacademica.id_grado = periodos_calificados.id_grado and
      cargaacademica.grupo = periodos_calificados.ID_GRUPO and
      cargaacademica.ano_lectivo = periodos_calificados.ano_lectivo and
      periodos_calificados.ano_lectivo=2013 and
      periodos_calificados.id_periodo=4

espero que me puedan colaborar cordialmente guldergan

Última edición por gulder fecha: 07-02-2014 a las 06:39:27.
Responder Con Cita
  #2  
Antiguo 07-02-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Prueba poniendo este último where.
Lo que hace es que el join te muestra todos los registros y el where te quita los que al unir no haya encontrado un registro para la tabla periodos_calificados y por lo tanto están con un valor nulo.

Código SQL [-]
SELECT cargaacademica.id_asignatura,
       cargaacademica.id_sede,
       cargaacademica.id_jornada,
       cargaacademica.id_grado,
       cargaacademica.grupo
FROM cargaacademica

LEFT OUTER JOIN periodos_calificados

ON    cargaacademica.id_asignatura = periodos_calificados.id_asignatura and
      cargaacademica.id_sede = periodos_calificados.id_sede  and
      cargaacademica.id_jornada = periodos_calificados.id_jornada and
      cargaacademica.id_grado = periodos_calificados.id_grado and
      cargaacademica.grupo = periodos_calificados.ID_GRUPO and
      cargaacademica.ano_lectivo = periodos_calificados.ano_lectivo and
      periodos_calificados.ano_lectivo=2013 and
      periodos_calificados.id_periodo=4

WHERE
   periodos_calificados.id_asignatura is null
Responder Con Cita
  #3  
Antiguo 07-02-2014
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
Thumbs up

hola duilioisola gracias por responder, modifique la consulta que me dijiste pero me retorna una gran cantidad de registros, lo que me debe retornar son solo unos cuantos no se que esta pasando




te dejo una imagen de la consulta para que observes cordial saludo
Responder Con Cita
  #4  
Antiguo 07-02-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Obviamente debes agregar al where el resto de condiciones necesarias.

Por ejemplo:

Código Delphi [-]
WHERE
And cargaacademica.ano_lectivo = 2013
Responder Con Cita
  #5  
Antiguo 07-02-2014
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
Pero no se que tantas condiciones me tocaría agregar en el where hay me perdi totalmente, muchas gracias por colaborarme..
Responder Con Cita
  #6  
Antiguo 10-02-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Según tu pregunta :
Cita:
o que quiero es traer las filas de la tabla carga académica que no están en periodos_calificados para un año lectivo y periodo especifico, también debe cumplir con id_sede,id_jornada,id_grado,grupo havia intentado esto pero no ,e
El WHERE debería filtrar todos estos campos. Algo así:
Código SQL [-]
SELECT cargaacademica.id_asignatura,
       cargaacademica.id_sede,
       cargaacademica.id_jornada,
       cargaacademica.id_grado,
       cargaacademica.grupo
FROM cargaacademica

LEFT OUTER JOIN periodos_calificados

ON    cargaacademica.id_asignatura = periodos_calificados.id_asignatura and
      cargaacademica.id_sede = periodos_calificados.id_sede  and
      cargaacademica.id_jornada = periodos_calificados.id_jornada and
      cargaacademica.id_grado = periodos_calificados.id_grado and
      cargaacademica.grupo = periodos_calificados.ID_GRUPO and
      cargaacademica.ano_lectivo = periodos_calificados.ano_lectivo and
      periodos_calificados.ano_lectivo=2013 and
      periodos_calificados.id_periodo=4

WHERE
   periodos_calificados.id_asignatura is null
   AND cargaacademica.ano_lectivo = 2013
   AND cargaacademica.¿¿¿PERIODO??? = 123
   AND cargaacademica.id_sede = 456
   AND cargaacademica.id_jornada = 789
   AND cargaacademica.id_grado = 123
   AND cargaacademica.grupo = 456
Responder Con Cita
  #7  
Antiguo 10-02-2014
Avatar de gulder
gulder gulder is offline
Miembro
 
Registrado: abr 2005
Ubicación: colombia-sucre
Posts: 384
Poder: 20
gulder Va por buen camino
buenos dias foro, lo he logrado con un "nor exist" de la siguiente forma

Código SQL [-]
SELECT cargaacademica.cedula,
       cargaacademica.id_asignatura,
       cargaacademica.id_sede,
       cargaacademica.id_jornada,
       cargaacademica.id_grado,
       cargaacademica.grupo

FROM cargaacademica
WHERE  cargaacademica.ano_lectivo=2013 and 
NOT EXISTS 
(SELECT periodos_calificados.id_asignatura,
        periodos_calificados.id_sede,
        periodos_calificados.id_jornada,
        periodos_calificados.id_grado,
        periodos_calificados.ID_GRUPO

   FROM periodos_calificados 
  WHERE periodos_calificados.ano_lectivo=2013 AND
        periodos_calificados.id_periodo=4 and 
        periodos_calificados.id_asignatura = cargaacademica.id_asignatura AND
        periodos_calificados.id_sede = cargaacademica.id_sede AND
        periodos_calificados.id_jornada = cargaacademica.id_jornada AND
        periodos_calificados.id_grado = cargaacademica.id_grado AND
        periodos_calificados.ID_GRUPO = cargaacademica.grupo)

el unico problema es que la consulta demora ejecutándose Affected rows: 0,Time: 21.182ms 21 segundos osea que es demorado, que puedo hacer para mejorar ese tiempo, igual en la bd no hay muchos datos...
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
Seleccionar filas de una tabla que no estan en otra ingmichel SQL 2 28-10-2013 13:16:35
buscar registros que estan en una tabla que no estan en otra microbiano SQL 5 02-06-2013 01:04:53
Listar registros de una Tabla que NO estan en Otra... darkamerico SQL 6 29-04-2013 18:55:55
Listar las aplicaciones que se están ejecutando razonasistemas API de Windows 3 10-12-2011 04:12:43
Obtener elementos de una tabla que no estan en otra Durbed SQL 4 29-12-2005 13:27:20


La franja horaria es GMT +2. Ahora son las 20:45:49.


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