Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: Luffy en Agosto 21, 2014, 01:36:57 pm

Título: Consulta SQL
Publicado por: Luffy en Agosto 21, 2014, 01:36:57 pm
buen día, tengo una pregunta

En esta consulta:

Código: (SQL) [Seleccionar]
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.
Título: Re:Consulta SQL
Publicado por: Albertomi en Agosto 21, 2014, 02:39:01 pm
Estimado Luffy
 
La consulta quedaría algo así:
Código: [Seleccionar]

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ú
Título: Re:Consulta SQL
Publicado por: Luffy en Agosto 21, 2014, 02:47:21 pm
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.

Código: (SQL) [Seleccionar]
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
Título: Re:Consulta SQL
Publicado por: YAcosta en Agosto 21, 2014, 03:01:33 pm
Creo que seria:

Código: (VB) [Seleccionar]
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.
Título: Re:Consulta SQL
Publicado por: Luffy en Agosto 21, 2014, 04:51:59 pm
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.

Código: (sql) [Seleccionar]
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')
Título: Re:Consulta SQL
Publicado por: Jeronimo en Agosto 21, 2014, 05:20:46 pm
¿No funcionaría de igual manera así?

Código: (SQL) [Seleccionar]
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
Título: Re:Consulta SQL
Publicado por: Luffy en Agosto 21, 2014, 06:19:00 pm
Buenas tardes,

Pues probe así y no me funciono.
Título: Re:Consulta SQL
Publicado por: Jeronimo en Agosto 21, 2014, 07:23:51 pm
Perdón, puse un paréntesis de más.
Sería así, a ver si funciona:
Código: (SQL) [Seleccionar]
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