PDA

Ver la Versión Completa : una Query que no quiere salir


Viet
22-08-2003, 20:18:47
Buenas a todos:

Trabajo con SQL Server 7.(contra mi voluntad je!)

Estoy tratando de generar un listado de todas los empleados que no generaron registros de actividad en un dia en particular.

Las tablas que tengo son Empleados(con id_empleado, ........) Acciones( con id_empleado, Fecha_hora, ....etc)

Por ejemplo tendria:

Emplados
-------------
1 pepe
2 manolo
3 cris

Acciones
------------
1 01/05/03 ......
2 01/05/03 ......
1 02/05/03.......
2 03/05/03 .......

Mi listado tendria que ser :

01/05/03 cris
02/05/03 manolo
02/05/03 cris
03/05/03 pepe
03/05/03 cris

Lo que estoy tratando de hacer es :

Select fecha, nombre
From
empleados left outer join acciones on (empleados.id_empleado=acciones.id_empleado)
Where
(acciones.id_emplado is NULL)

pero no me funciona..

Alguna sugerencia? :(:confused:

otra cosita : seria muy util para mi poder filtra por fechas con algo como (fecha between '01/05/03' and '03/05/03') pero me imagino que quedaran estos campos en NULL despues del join, no?


Gracias de antemano por su tiempo :p

delphi.com.ar
22-08-2003, 20:36:18
Todo esto es una suposición:
Si tus empleados generaron registros de actividad en un día en particular, entonces no van a tener un registro en esa tabla para poder compararlo con null, por lo tanto tu consulta no va a funcionar porque no se cumple la relación "empleados.id_empleado=acciones.id_empleado", lo que tienes que hacer es usar un NOT EXISTS

Select fecha, nombre
From empleados
where not exists (select 1 from acciones
where empleados.id_empleado=acciones.id_empleado)

Saludos!

Viet
22-08-2003, 20:52:15
Muchas Gracias por tu idea pero..... El campo fecha justamente esta en la tabla Acciones, y con la consulta que me pasas solo consigo un registro por empleado que nunca haya hecho una actividad osea que no exista en la tabla acciones.

Lo que yo necesitaria es un registro por dia por empleado que no figure en actividades ej:


01/05/03 cris
02/05/03 manolo
02/05/03 cris
03/05/03 pepe
03/05/03 cris


:confused:

delphi.com.ar
22-08-2003, 21:07:55
uPS.. Tienes razón.. me he olvidado lo mas importante...
Select fecha, nombre
From empleados
where not exists (select 1 from acciones
where empleados.id_empleado=acciones.id_empleado
and acciones.fecha = '01/01/2000')

Igualmente para lo que tu quieres, es conveniente tener una tabla con las fechas de en las que se ha trabajador, y hacer la pregunta al revés.... quiero Todos los empleados que no esten en la tabla acciones para las fecha

Viet
22-08-2003, 21:22:51
Muchisimas Gracias ;)