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

Subconsulta con varias columnas ???

Estas en el tema de Subconsulta con varias columnas ??? en el foro de SQL Server en Foros del Web. Estoy implementando una consulta que muestre a los resgistros de una tabla EMPLEADOS, cuya fecha de contrato y puesto loboral NO Coincidan con los datos ...
  #1 (permalink)  
Antiguo 08/08/2008, 09:54
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Antigüedad: 16 años, 8 meses
Puntos: 0
Subconsulta con varias columnas ???

Estoy implementando una consulta que muestre a los resgistros de una tabla EMPLEADOS, cuya fecha de contrato y puesto loboral NO Coincidan con los datos de otra tabla Historial, en los Campos fecha de contrato y puesto loboral.

Intenete algo como lo siguiente:

SELECT *
FROM Ampleados
WHERE (FEC_Cont, Puesto) NOT IN (SELECT FEC_Cont, Puesto FROM Historial)

Espero puedan ayudarme...
  #2 (permalink)  
Antiguo 08/08/2008, 10:54
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: Subconsulta con varias columnas ???

Usa un left join, o un query correlacionado con not exists.
  #3 (permalink)  
Antiguo 08/08/2008, 11:49
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Subconsulta con varias columnas ???

Sera muha abuso si te solicito un Left join con correlacion.???!!!
  #4 (permalink)  
Antiguo 08/08/2008, 14:52
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: Subconsulta con varias columnas ???

Problema no es, abuso, algunos si podrían considerarlo. En la mañana que te respondí iba de prisa. Ambas operaciones son básicamente un LEFT ANTI SEMI JOIN, si investigas al respecto, después pensar en ellas será automático.

Código:
SELECT    *
FROM    Empleados AS e
WHERE    NOT EXISTS (
            SELECT    NULL
            FROM    Historial
            WHERE    FEC_Cont = e.FEC_Cont
                    AND Puesto = e.Puesto
        )

---- Esta es otra opción

SELECT        e.*
FROM        Empleados AS e
LEFT JOIN    Historial AS h
            ON e.FEC_Cont = h.FEC_Cont
            AND e.Puesto = h.Puesto
WHERE        h.FEC_Cont IS NULL
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 00:35.