
Consulta con tres tablas
#1
Escrito 25 marzo 2009 - 05:47
Empleados
EmpID (Number)
Apellidos (Text)
Nombres (Text)
DptoID (Number)
Cargo (Number)
Departamento
DptoID (Number)
Descricpcion (Number)
Plantillas
EmpID (Number)
Plantilla (Memo)
Una breve explicación de las tablas, como es obvio las tablas empleados y departamentos no se necesita de explicación, la tabla plantilla es clave de esta consulta, pues son las huellas dactilares capturada de los empleados, como no están todos los empleados, necesito sacar una consulta de los empleados que faltan por capturar las huellas, por ejemplo, la tabla de empleados hay 3,500 registros, o sea, 3,500 empleados y en la tabla plantilla hay 2,800 empleados que se le capturó su huella, necesito sacar un reporte de los 700 empleados que faltan por capturar. Espero que me hayan entendido :$.
Fleon xD
#2
Escrito 25 marzo 2009 - 05:59
Tal vez esto te sirva amigo.
SELECT a.EmpId, a.Nombres, a.Apellidos, a.DeptoID, b.Plantilla FROM Empleados a LEFT JOIN Plantillas b ON a.EmpID = b.EmpID WHERE b.Plantilla IS NULL
Salud OS
#3
Escrito 25 marzo 2009 - 06:35

Fleon xD
#4
Escrito 25 marzo 2009 - 06:51
Fleon xD
#5
Escrito 25 marzo 2009 - 07:09
SELECT a.empleados, a.nombres, a.apellido, a.departamento, b.Template, c.ID FROM (empleados a LEFT JOIN fptable b ON a.empleados = b.EnrollNumber) LEFT JOIN departamento c ON a.departamento = c.ID WHERE b.Template IS NULL GROUP BY c.ID, a.departamento, a.empleados, a.nombres, a.apellido, e,departamento, b.template
Pero obtuve el siguiente error:
---------------------------
Error
---------------------------
The specified field 'departamento' could refer to more than one table listed in the FROM clause of your SQL statement.
---------------------------
OK Help
---------------------------
¿A qué se deberá esto?.
Fleon xD
#6
Escrito 25 marzo 2009 - 07:47
Asumiendo que todos tus empleados están en la tabla Departamento quedaría así:
SELECT A.EmpID, A.Apellidos, A.Nombres, A.Cargo , B.Descricpcion Departamento FROM EMPLEADOS A JOIN DEPARTAMENTOS B ON A.DptoID = B.DptoID WHERE A.EmpID NOT IN (SELECT C.EmpID FROM PLANTILLAS C)
Espero te sirva, sino pasa de nuevo!!


#7
Escrito 25 marzo 2009 - 08:09
Otra solución podría ser la siguiente, siempre y cuando la siguiente función este disponible en Access.
SELECT A.EmpID, A.Apellidos, A.Nombres, A.Cargo , B.Descricpcion Departamento FROM EMPLEADOS A JOIN DEPARTAMENTOS B ON A.DptoID = B.DptoID WHERE NOT EXISTS (SELECT C.EmpID FROM PLANTILLAS C WHERE A.EmpId = C.EmpId)
#8
Escrito 26 marzo 2009 - 05:03

Fleon xD
#9
Escrito 26 marzo 2009 - 05:15
Gracias Rolphy, no funcionó, de todos modos decidí hacerlo en dos querys y hasta ahora está resultando, pero aún siguen abiertas las opciones
.
Fleon xD
Intenta con esto amigo Flemon.
SELECT departamentos.DeptoID, empleados.nombres, empleados.apellido, Plantillas.Template FROM (departamentos INNER JOIN empleados ON departamentos.DeptoID = empleados.DptoID) LEFT JOIN Plantillas ON empleados.EmpID = Plantillas.EmpID WHERE Plantillas.Template IS NULL ORDER BY departamentos.DeptoID
Salud OS
#10
Escrito 26 marzo 2009 - 05:29
....
Intenta con esto amigo Flemon.
....
Salud OS
Y ese quién es ???????


Ya pues, si no ayuda, no estorbe... :$

#11
Escrito 26 marzo 2009 - 05:32
Y ese quién es ???????![]()
8-)
Ya pues, si no ayuda, no estorbe... :$
Upps, se me fue una m de mamon



Sorry

Salud OS
#12
Escrito 03 septiembre 2009 - 12:31
Upps, se me fue una m de mamon
![]()
![]()
Sorry
Salud OS


---------------------------
Error
---------------------------
No coincide el tipo en la expresión.
---------------------------
OK Help
---------------------------
La consulta la tengo así:
SELECT Departamentos.DeptoID, Departamentos.DESCRIPCION, Empleados.Nombre, Empleados.Apellido, Huellas.Huella FROM (Departamentos INNER JOIN Empleados ON Departamentos.DeptoID = Empleados.DptoID) LEFT JOIN Huellas ON Empleados.Codigo = Huellas.Codigo WHERE Huellas.Huella IS NULL ORDER BY Departamentos.DeptoID
¿Qué sucede?

Fleon xD
#13
Escrito 03 septiembre 2009 - 12:42
ON Empleados.Codigo = Huellas.Codigo
o es un error de tipeo???, deberia ser asi:
ON Empleados.EmpId = Huellas.EmpId