Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: Luffy en Agosto 21, 2014, 01:36:57 pm
-
buen día, tengo una pregunta
En esta consulta:
Select * From Contratos Where Id_Empresa =1 and Finca ='SAN JOSÉ' and Departamento ='LABORES CULTURALES' and Tipo_Empleado ='NÓMINA EJECUTIVA' and Estado='ALTA'
Lo que quiero es que como ven el estado lo filtra por ALTA pero hay empleados que están de baja que salieron en el mes que estoy haciendo la planilla por lo tanto tambien quiero los empleados que tengan estado BAJA y que la FechaEgreso sea menor al último mes de la nómina.
Pero no tengo mayor conocimiento de SQL por lo tanto pido su conocimiento para ayudarme a resolver dicho problema. Gracias.
-
Estimado Luffy
La consulta quedaría algo así:
SELECT * FROM Contratos
WHERE Id_Empresa = 1 AND
Finca ='SAN JOSÉ' AND
Departamento ='LABORES CULTURALES' AND
Tipo_Empleado ='NÓMINA EJECUTIVA' AND
(Estado='ALTA' OR Estado='BAJA') ;
Que motor de base de datos usas
Saludos, desde algún lugar de Lima-Perú
-
Saludos, Albertomi
Gracias por tu aporte, ya habia pensado en esa condición, pero solamente quiero los empleados que estén de baja en un periodo especifico, y los demas de alta.
SELECT * FROM Contratos
WHERE Id_Empresa = 1 AND
Finca ='SAN JOSÉ' AND
Departamento ='LABORES CULTURALES' AND
Tipo_Empleado ='NÓMINA EJECUTIVA' AND
Estado ='ALTA' Or
(Estado ='BAJA' si la fecha de baja está entre los dias del 1/01/2014 al 31/01/2014) ;
Edito: Utilizo MySQL Gracias
-
Creo que seria:
SELECT * FROM Contratos
WHERE Id_Empresa = 1 AND
Finca ='SAN JOSÉ' AND
Departamento ='LABORES CULTURALES' AND
Tipo_Empleado ='NÓMINA EJECUTIVA' AND
Estado ='ALTA' OR
(Estado ='BAJA' AND FECHA BETWEEN 1/01/2014 AND 31/01/2014) ;
O sea, poniendo entre parentesis Baja con el rango de fecha y luego aplica el OR con el Estado,
s.e. u .o.
-
Muchas Gracias a todos por responder,
Este es el código que me dio como resultado la información que necesitaba, Gracias a YvanB el me oriento en el camino.
SELECT * FROM Contratos
WHERE (Id_Empresa = 1 AND
Finca ='SAN JOSÉ' AND
Departamento ='LABORES CULTURALES' AND
Tipo_Empleado ='NÓMINA EJECUTIVA' AND
Estado ='ALTA') OR
(Id_Empresa = 1 AND
Finca ='SAN JOSÉ' AND
Departamento ='LABORES CULTURALES' AND
Tipo_Empleado ='NÓMINA EJECUTIVA' AND
Estado ='BAJA' AND Egreso BETWEEN '2014-08-15' AND '2014-08-31')
-
¿No funcionaría de igual manera así?
SELECT * FROM Contratos
WHERE Id_Empresa = 1 AND
Finca ='SAN JOSÉ' AND
Departamento ='LABORES CULTURALES' AND
Tipo_Empleado ='NÓMINA EJECUTIVA' AND
(Estado ='ALTA' OR
((Estado ='BAJA' AND Egreso BETWEEN '2014-08-15' AND '2014-08-31'))
Jerónimo
-
Buenas tardes,
Pues probe así y no me funciono.
-
Perdón, puse un paréntesis de más.
Sería así, a ver si funciona:
SELECT * FROM Contratos
WHERE Id_Empresa = 1 AND
Finca ='SAN JOSÉ' AND
Departamento ='LABORES CULTURALES' AND
Tipo_Empleado ='NÓMINA EJECUTIVA' AND
(Estado ='ALTA' OR
(Estado ='BAJA' AND Egreso BETWEEN '2014-08-15' AND '2014-08-31'))
Jerónimo