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

obtener el registro de mayor fecha

Estas en el tema de obtener el registro de mayor fecha en el foro de Bases de Datos General en Foros del Web. Hola a todos. Para muchos será pregunta fácil pero a mi me está costando y no lo saco. Dos tablas. incidencias (id_incidencia, descripción, fecha) partes ...
  #1 (permalink)  
Antiguo 23/02/2012, 04:37
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 6 meses
Puntos: 0
obtener el registro de mayor fecha

Hola a todos.

Para muchos será pregunta fácil pero a mi me está costando y no lo saco.

Dos tablas.
incidencias (id_incidencia, descripción, fecha)
partes (id_parte, id_incidencia, descripción, fecha)

Quiero sacar un listado con todos los números de incidencia, la descripción y la fecha de la primera tabla junto con la descripción y la fecha de la segunda tabla.

Esto genera un listado con incidencias repetidas para todas aquellas incidencias que tengan más de 1 parte en la tabla partes, lógico. Pero yo quiero que me muestre sólo 1 registro por incidencia que muestre los datos del parte con mayor fecha, los partes de esa misma incidencia con fecha más antigua no me interesan. Si hacerlo por fechas complica en algo el tema también me valdría aquel parte con el id_parte más alto ya que son secuenciales.

Espero haberlo explicado correctamente.

¿Alguien me sabe ayudar?

Gracias.
  #2 (permalink)  
Antiguo 23/02/2012, 10:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: obtener el registro de mayor fecha

ejemplo de tus datos por favor
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 23/02/2012, 16:44
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: obtener el registro de mayor fecha

seria algo como:

Código SQL:
Ver original
  1. SELECT
  2.           A.id_incidencia AS Num
  3.           , A.[descripción]
  4.           , (SELECT top 1 [descripción] FROM partes WHERE id_incidencia=A.id_incidencia ORDER BY id_parte DESC) AS [DESC Inci]
  5.           , (SELECT top 1 fecha FROM partes WHERE id_incidencia=A.id_incidencia ORDER BY id_parte DESC) AS [Fecha DESC Inci]
  6. FROM incidencias A
  #4 (permalink)  
Antiguo 24/02/2012, 01:39
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: obtener el registro de mayor fecha

joch_pa, gracias. Nunca había usado la función top, voy a probarla.

Libras, gracias por preocuparte, voy a probar lo que joch_pa me ha indicado y si me falla por lo que sea te expongo aquí algún ejemplo para que me puedas ayudar.
  #5 (permalink)  
Antiguo 25/02/2012, 07:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: obtener el registro de mayor fecha

Ten cuidado con TOP, porque no pertenece al SQL estandar y no está implementado en todos los DBMS. Es específico (hasta lo que sé) de Microsoft SQL Server.
Nota: Siempre es importante señala claramente con qué DBMS estás trabajando, porque sintaxis de consultas, funciones y SP don diferentes en cada uno de ellos. No todo funciona en todos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 27/02/2012, 03:27
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: obtener el registro de mayor fecha

Hola a todos.

Joch_pa, he puesto en práctica lo que me indicaste y veo que no termina de cuadrarme. Te copio aquí la sql que he generado

Código SQL:
Ver original
  1. SELECT incidencias.n_incidencia,
  2.  
  3. (SELECT TOP 1 (partes_trabajo.descripcion)
  4. FROM partes_trabajo, incidencias
  5. WHERE (((partes_trabajo.id_incidencia)=[incidencias].[n_incidencia]))
  6. ORDER BY partes_trabajo.id_parte_trabajo DESC)  AS parte_descripcion,
  7.  
  8.  
  9. (SELECT TOP 1 (partes_trabajo.fec_parte)
  10. FROM partes_trabajo, incidencias
  11. WHERE (((partes_trabajo.id_incidencia)=[incidencias].[n_incidencia]))
  12. ORDER BY partes_trabajo.id_parte_trabajo DESC)  AS parte_fecha
  13.  
  14.  
  15. FROM incidencias

Con eso consigo los números de las incidencas (todo bien) y a su lado siempre la descripción y la fecha de la última de las incidencias y no las que le corresponderían a cada una. No se si me explico bien. No me muestra las que corresponderían si no sólo la de la última incidencia.

¿Cómo puedo arreglarlo?

Sobre el comentario que hace gnzsoloyo decir que la BBDD es Access.

Gracias y un saludo.
  #7 (permalink)  
Antiguo 27/02/2012, 03:31
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: obtener el registro de mayor fecha

Disculpadme, vi que no había respetado los alias que habías puesto a las tablas y al probarlo me ha funcionado correctamente, por si alguien más qusiera saber el resultado final ahora la sintaxis que tengo es :

Código SQL:
Ver original
  1. SELECT A.n_incidencia,
  2.  
  3. (SELECT TOP 1 (partes_trabajo.descripcion)
  4. FROM partes_trabajo
  5. WHERE (((partes_trabajo.id_incidencia)=A.n_incidencia))
  6. ORDER BY partes_trabajo.id_parte_trabajo DESC)  AS parte_descripcion,
  7.  
  8.  
  9. (SELECT TOP 1 (partes_trabajo.fec_parte)
  10. FROM partes_trabajo
  11. WHERE (((partes_trabajo.id_incidencia)=A.n_incidencia))
  12. ORDER BY partes_trabajo.id_parte_trabajo DESC)  AS parte_fecha
  13.  
  14.  
  15. FROM incidencias A

Muchas gracias a todos, podemos dar el asunto por cerrado.

Un saludo.
Magotas

Etiquetas: fecha, mayor, 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 18:48.