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

seleccionar registro mas cercano a hoy

Estas en el tema de seleccionar registro mas cercano a hoy en el foro de Mysql en Foros del Web. Hola, tengo una consulta: tengo una tabla incapacidades donde guardo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original idfuncionario      incdesde           ...
  #1 (permalink)  
Antiguo 01/04/2015, 12:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 4 meses
Puntos: 0
seleccionar registro mas cercano a hoy

Hola, tengo una consulta:
tengo una tabla incapacidades donde guardo:
Código PHP:
Ver original
  1. idfuncionario      incdesde                   inchasta
  2. 123                   2015/03/16             2015/03/25
  3. 456                   2015/03/20             2015/03/25
  4. 123                   2015/03/01             2015/03/15
Necesito me muestre la incapacidad de cada funcionario pero solo la mas reciente o sea la mas cercana a hoy.
Lo intente con un id autoincrementado pero solo logre que me muestre un unico registro cuando en realidad lo que necesito es que me muestre cada incapacidad reciente de cada funcionario.
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 01/04/2015, 12:45
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: seleccionar registro mas cercano a hoy

Código SQL:
Ver original
  1. SELECT MAX(incdesde),idfuncionario FROM tabla GROUP BY idfuncionario
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 01/04/2015, 13:01
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: seleccionar registro mas cercano a hoy

Gracias esa era la respuesta.
  #4 (permalink)  
Antiguo 01/04/2015, 15:59
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: seleccionar registro mas cercano a hoy

saludos amigos aqui dejo un trozo de codigo que me resolvio el problema que tenia.

Código ASP:
Ver original
  1. SELECT  idinc as id,numfuncinc,nombre,primer_apellido,segundo_apellido,incdesde,inchasta,incpor,tallerinc,subtallerinc
  2. FROM (SELECT  idinc,numfuncinc,nombre,primer_apellido,segundo_apellido,incdesde,inchasta,incpor,tallerinc,subtallerinc
  3. FROM incapacidades,recursohumano WHERE inchasta<=CURDATE() and numerofunc=numfuncinc
  4. ORDER BY inchasta desc) as total group by numfuncinc
idinc=id de la incapacidad autoincrement.
numfuncinc=numero de funcionario en la tabla incapacidades.
numerofunc=numero de funcionario en la tabla recurso humano.
con esto pude escoger siempre el registro mas cercano a hoy de cada funcionario de la empresa sin que se repita.
  #5 (permalink)  
Antiguo 01/04/2015, 16:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: seleccionar registro mas cercano a hoy

Creo que esto tambien podria funcionar

Código SQL:
Ver original
  1. SELECT top 1 DISTINCT  idinc,numfuncinc,nombre,primer_apellido,segundo_apellido,incdesde,inchasta,incpor,tallerinc,subtallerinc
  2. FROM incapacidades,recursohumano WHERE inchasta<=CURDATE() AND numerofunc=numfuncinc
  3. ORDER BY inchasta DESC
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 03/04/2015, 07:35
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: seleccionar registro mas cercano a hoy

saludos libras para decirte que tu solucion me dio este error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 DISTINCT idinc,numfuncinc,nombre,primer_apellido,segundo_ap ellido,incdesde,in' at line 1

A que se debera??
  #7 (permalink)  
Antiguo 03/04/2015, 09:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: seleccionar registro mas cercano a hoy

En primer lugar, @lavos, te recomiendo que si vas a usar MySQL, te descargues de la web oficial el MySQL Workbench y lo uses para crear y probar las consultas. Esa herramienta tiene un corrector sintáctico que te evitará caer en problemas mas o menos básicos.
La consulta que te plantea @Libras no es para MySQL, sino para SQL Server, aunque su lógica es idéntica. Pero como hay diferencias en las clausulas propias de cada DBMS, no funicona acá (tampoco funcionaría en Oracle o PosgreSQL).
Lo más parecido sería:
Código MySQL:
Ver original
  1.     idinc,
  2.     numfuncinc,
  3.     nombre,
  4.     primer_apellido,
  5.     segundo_apellido,
  6.     incdesde,
  7.     inchasta,
  8.     incpor,
  9.     tallerinc,
  10.     subtallerinc
  11.     incapacidades I INNER JOIN
  12.     recursohumano R ON I.numerofunc = R.numfuncinc
  13.     inchasta <= CURDATE()
  14. ORDER BY inchasta DESC
Como podrás ver no hay demasiada distancia, pero hay cambios: MySQL no tiene las clausulas TOP, y sí LIMIT, pero no van en el mismo orden.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 09/04/2015, 20:10
 
Fecha de Ingreso: noviembre-2009
Mensajes: 37
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: seleccionar registro mas cercano a hoy

Ok muchas gracias por tu explicacion gnzsoloyo

Etiquetas: registro, tabla
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




La zona horaria es GMT -6. Ahora son las 19:46.