Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con consulta (https://www.clubdelphi.com/foros/showthread.php?t=7816)

albertron 26-02-2004 22:09:18

Ayuda con consulta
 
Hola a todos,

Tengo dos tablas, EMPLEADOS e HISTORICO. En la tabla HISTORICO puede haber varios registros por cada registro de la tabla EMPLEADOS relacionados por EMPLEADOS.ID, HISTORICO.IDEMPLEADO. Necesito hacer una consulta sobre todos los campos de la tabla EMPLEADOS y sólo sobre el último insertado en la tabla HISTORICO, el último en la tabla histórico sería el mayor HISTORICO.ID, he intentado algo así pero lógicamente no funciona

SELECT TOP 1 * FROM EMPLEADOS
LEFT JOIN HISTORICO
ON EMPLEADOS.ID=HISTORICO.EMPLEADOS
WHERE EMPLEADOS.NOMBRE='alberto'

Muchas gracias,

Un saludo.

Alberto.

jachguate 27-02-2004 00:55:58

Porque no funciona?

Y si haces un

order by historico.id desc

sigue sin funcionar?

albertron 27-02-2004 15:13:03

Hola, gracias por responder,

Funciona para devolver sólo una fila, pero si pongo como condición por ejemplo EMPLEADOS.SEXO='M' necesito que me devuelva un resultado por cada registro de EMPLEADOS y sólo me devuelve un registro.

Gracias, un saludo.

jachguate 27-02-2004 16:10:44

ahhh....

proba con una subconsulta

Código:

Select e.nombre, e.apellidos, h.monto_pago
  from empleados e left join historico h
        on e.id = h.idempleado
 where h.id = (select max(h2.id)
                    from historico h2
                    where h2.idempleado = e.id)

eso si... no será rápido ni muy óptimo en todos los motores. Eso ya depende de la habilidad del motor para establecer un plan...

Hasta luego.

;)

albertron 27-02-2004 16:19:26

Funciona perfectamente, muchas gracias...

Un saludo.


La franja horaria es GMT +2. Ahora son las 20:28:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi