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

Simple Consulta SQL

Estas en el tema de Simple Consulta SQL en el foro de Bases de Datos General en Foros del Web. Hola quisiera saber como hacer una consulta que si bien me parece simple me está costando mucho, para hacer mas facil la explicación diagramé las ...
  #1 (permalink)  
Antiguo 01/03/2008, 13:30
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
De acuerdo Simple Consulta SQL

Hola quisiera saber como hacer una consulta que si bien me parece simple me está costando mucho, para hacer mas facil la explicación diagramé las tablas. lo que quiero es obtener la lista de personas que se encuentran sin empleo actualmente, muchas gracias.

  #2 (permalink)  
Antiguo 01/03/2008, 16:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Simple Consulta SQL

¿La columna trabajando_hasta es del tipo varchar?
  #3 (permalink)  
Antiguo 01/03/2008, 23:11
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
Re: Simple Consulta SQL

La estructura de la consulta es como lo que sigue:
Código:
SELECT        e.ID, e.NOMBRE
FROM        EMPLEADOS AS e
LEFT JOIN     TRABAJANDO AS t
            ON t.ID_EMPLEADO = e.ID
            AND (
                t.TRABAJANDO_HASTA = 'Trabajando_actualmente'
                OR t.TRABAJANDO_HASTA > ???
            )
WHERE        t.ID_EMPLEADO IS NULL
La gran dudad es la columna TRABAJANDO_HASTA. Igual que dax_noelia pregunto ¿es varchar? Tiene que serlo para guardar una cadena como "Trabajando_actualmente". Si ese es el caso, tendrías que hacer la conversión de los valores a fechas para compararla con la fecha actual.
Tampoco tengo idea de que RDBMS estás usando, por los mismo no sé como se haría la comparación de la fecha...
  #4 (permalink)  
Antiguo 02/03/2008, 14:03
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Simple Consulta SQL

Gracias, efectivamente el campo trabajando_actualmente es un varchar, estoy trabajando con sql por medio de asp para una base access.
Apenas pruebe el codigo les aviso, pero les agradezco su tiempo.
Saludos
  #5 (permalink)  
Antiguo 21/03/2008, 10:04
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Simple Consulta SQL

Me da el siguiente error:
La expresión de combinación no está admitida.

Aqui pongo el ejemplo exactamente como esta en mi pagina:

SELECT * FROM Empleados AS Emp LEFT JOIN Trabajando AS Tra ON Tra.ID = Emp.ID AND (Tra.TRABAJANDO_HASTA <> 'Trabajando_actualmente') WHERE Tra.ID IS NULL

Lo que deberia obtener es aquellos empleados que no existan en la tabla Trabajando + aquellos empleados que existan pero que tengan el campo TRABAJANDO distinto de "Trabajando_Actualmente".
No me quiero complicar con las fechas por ahora, solo quisiera traer el resultado de ambas tablas, que estaré haciendo mal?
Gracias!
  #6 (permalink)  
Antiguo 22/03/2008, 08:46
 
Fecha de Ingreso: marzo-2008
Ubicación: SanTelmo City
Mensajes: 12
Antigüedad: 16 años, 1 mes
Puntos: 1
Re: Simple Consulta SQL

mmmmmmm

Código:
SELECT * FROM 
Empleados AS Emp LEFT OUTER JOIN Trabajando AS Tra 
ON Tra.ID = Emp.ID AND (Tra.TRABAJANDO_HASTA <> 'Trabajando_actualmente') 
WHERE Tra.ID IS NULL
con OUTER obtenes todos los resultados de la tabla, en este caso Empleados, y al utilizar la clausula Tra.ID IS NULL, le estas diciendo que no esten en la tabla trabajado.



Espero que te sea util,
Saludos
  #7 (permalink)  
Antiguo 25/03/2008, 13:42
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Exclamación Re: Simple Consulta SQL

Syncro, al igual que la consulta Beakdan me tira el siguiente error:

La expresión de combinación no está admitida

Estoy usando access e iis en xp pro, podria llegar a ser por la version del soft??

La idea es sacar todos los registros de la tabla Empleados que no existan en la tabla Trabajando e incluir en el resultado, aquellos que si existan en Trabajando pero que cumplan con la condicion Trabajando.TRABAJANDO_HASTA distinto de 'trabajando actualmente'.

Yo pregunto de ignorante que soy noma, se pueden poner "if..then..else..endif" dentro de la consulta? quizas pudiera solucionar algo con eso, no se... cualquier aporte vale.

Gracias por su tiempo, Saludos
  #8 (permalink)  
Antiguo 26/03/2008, 03:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Simple Consulta SQL

Sobre Access directamente esto funciona


Código:
SELECT Empleados.id, 
             Empleados.nombre, 
             Trabajando.Trabajando_hasta
       FROM Empleados 
                       LEFT JOIN Trabajando 
                               ON Empleados.id = Trabajando.id
       WHERE IIf(Trabajando_hasta Is Null,
                                Date()-1,
                                IIf(Trabajando_hasta="Trabajando_Actualmente",
                                           Date(),
                                           CDate(Mid([Trabajando_hasta],7,4) & "/" & Mid([Trabajando_hasta],4,2) & "/" & Left([Trabajando_hasta],2))))<Date();
Yo me plantearia normalizar la base.

Quim
  #9 (permalink)  
Antiguo 27/03/2008, 01:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Simple Consulta SQL

Error...

deberia ser:

....

Empleados.id = Trabajando.id_empleado

....


Sorry
  #10 (permalink)  
Antiguo 04/04/2008, 16:12
 
Fecha de Ingreso: septiembre-2007
Mensajes: 8
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Simple Consulta SQL

Houston, tengo un problema... no me funcionó la consulta, me da el error de expresion de combinacion no admitida, por lo tanto opté por lo mas ignorante (un parche al vuelo, al estilo m|crosoft), puse un campo trabajando_hasta en la tabla empleados y cada vez que llamo a un metodo para guardar/modificar empleados.trabajando_hasta tambien modifico el campo empleado.trabajando_hasta. Ahora puedo ver todos los que estan trabajando con un
select * from empleado as e where e.trabajando_hasta = 'activo'


Se que no es lo ideal, me pa re ce que tengo q leer un poco de normalizacion de bases de datos... Muchas gracias a todos por opinar.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 20:43.