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

Ayuda: Consulta de Registros que no están en otra tabla

Estas en el tema de Ayuda: Consulta de Registros que no están en otra tabla en el foro de SQL Server en Foros del Web. Hola colegas, llego a este punto de escribir y solicitar su ayuda porque realmente no entiendo y no hallo forma de solucionar mi problema... hasta ...
  #1 (permalink)  
Antiguo 16/09/2009, 10:03
 
Fecha de Ingreso: septiembre-2009
Mensajes: 31
Antigüedad: 14 años, 7 meses
Puntos: 0
Ayuda: Consulta de Registros que no están en otra tabla

Hola colegas, llego a este punto de escribir y solicitar su ayuda porque realmente no entiendo y no hallo forma de solucionar mi problema... hasta estoy perdiendo toda la autoestima por no poder hacerlo jeje...

Pasa que tengo 2 tablas, ellas tienen un ID pero los mismos no tienen referencia en la otra tabla... me explico, el Tabla1 no tiene referencia con el ID de Tabla2 y viceversa...

Una tabla contiene los registros y la otra las aprobaciones a esos registros, los campos por los cuales debo hacer referencia son la cédula, usuario y id de la semana...

Resulta que necesito una consulta que me devuelva todos los registros cuya combinación no esté aprobada... es decir que si tengo

1 - PACO - 15
1 - PACO - 16
1 - PACO - 17

y apruebo

1 - PACO - 15

entonces obtenga en el resultado de la consulta

1 - PACO 16
1 - PACO 17


Lo que esté en Tabla1 y no en Tabla2

Como quien dice una resta entre tablas, obtener los registros cuya combinación no esté en la segunda tabla... pero sin usar ID, sino que es una especie de ID compuesto por los 3 campos...


Según he leído puedo usar un JOIN, pero la verdad no se cómo se utiliza ni cual utilizar, y leo y no lo entiendo y menos lo se aplicar a mi caso.

Si alguien me puede guiar un poco...

Gracias!
  #2 (permalink)  
Antiguo 16/09/2009, 19:05
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Respuesta: Ayuda: Consulta de Registros que no están en otra tabla

Tu problema es una diferencia de conjuntos. Si estás usando SQL Server 2005 y ya tienes las dos consultas que devuelven los resultados como los describes, utiliza el operador EXCEPT.
Una solución usando un LEFT JOIN podría ser más eficiente, pero no das mayores detalles sobre la estructura de tus tablas como para hacerte una sugerencia sólida.
Código:
SELECT        cédula, usuario, idsemana
FROM        Tabla1 as t1
            LEFT JOIN    Tabla2 as t2
                        ON    t1.cédula = t2.cédula
                        AND    t1.usuario = t2.usuario
                        AND    t1.idsemana = t2.idsemana
WHERE        t2.cédula IS NULL    --Suponiendo que "cédula" no pueda ser NULL
                                --de lo contrario comparar contra NULL uno que no pueda serlo,
                                --o todos y cada uno de ellos
            --AND t2.usuario IS NULL
            --AND t2.idsemana IS NULL

Última edición por Beakdan; 16/09/2009 a las 19:15
  #3 (permalink)  
Antiguo 17/09/2009, 10:28
 
Fecha de Ingreso: septiembre-2009
Mensajes: 31
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayuda: Consulta de Registros que no están en otra tabla

Hola.. muchas gracias por la respuesta... disculpa si me faltó especificar algo, pensé que con sólo esa información bastaba... en realidad el resto de la estructura de ambas tablas son totalmente diferentes, sin embargo al realizar la consulta solo tomo esas 3 columnas... el problema tambien iba porque en mi Tabla1 tengo los registros por dia, y en la Tabla2 la aprobacion de la semana, por tanto cada registro en la Tabla2 puede indicar que se aprobaron 1 o 7 dias segun lo que se haya ingresado... pero eso ya lo tengo controlado... lo que necesitaba era ver que la Cedula, el Usuario y el ID de la Semana (que ya lo obtengo con base en la fecha) no estuvieran en la tabla de aprobado.

La opción del EXCEPT la probé y pareciera que funciona bien pero debo hacer un poco más de pruebas, con respecto al LEFT JOIN me gustó, pero no logré obtener lo que deseaba.. al comparar el campo de Cedula que efectivamente no debe ser NULL me está trayendolos igual, por lo que lo cambie por un IS NOT NULL de la otra tabla, con eso no me trajo más los NULL pero no se si la consulta se haya alterado..

Disculpa la molestia, el LEFT JOIN me trae una consulta con los Registros que no estan en la segunda tabla que se especifique, o al reves? me trae los registros que no están en la primera tabla pero si en la segunda?...
  #4 (permalink)  
Antiguo 21/09/2009, 10:44
 
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayuda: Consulta de Registros que no están en otra tabla

Cita:
Disculpa la molestia, el LEFT JOIN me trae una consulta con los Registros que no estan en la segunda tabla que se especifique, o al reves? me trae los registros que no están en la primera tabla pero si en la segunda?...
Inner join relaciona los registros de la primera tabla con su par en la segunda tabla

El left join relaciona todos los registros de la primera tabla que no necesariamente tienen su par en la segunda tabla

El right join relaciona todos los registros de la segunda tabla que no necesariamente tienen su par en la primera tabla
  #5 (permalink)  
Antiguo 22/09/2009, 06:31
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Información Respuesta: Ayuda: Consulta de Registros que no están en otra tabla

Cita:
Iniciado por Cesar_Balaguer Ver Mensaje
Disculpa la molestia, el LEFT JOIN me trae una consulta con los Registros que no estan en la segunda tabla que se especifique, o al reves? me trae los registros que no están en la primera tabla pero si en la segunda?...
LEFT Join trae siempre los registros de la tabla a la izquierda
(Left = izquierdo).


RIGHTjoin trae siempre los registros de la tabla de la derecha
(RIGHT= derecho).

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 23/09/2009, 12:09
 
Fecha de Ingreso: septiembre-2009
Mensajes: 31
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayuda: Consulta de Registros que no están en otra tabla

Excelente gracias a todos...
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:48.