¿Cómo crear una consulta en Access para que me devuelva el campo mas reciente?

Tengo una tabla con los resultados de las analíticas de mis pacientes, de forma que cada línea o registro consta de un campo ID, otro es el nombre (que puede estar repetido si tiene varias analíticas), otro es la fecha de la analítica, y unos 6 campos más con los resultados. ¿Cómo puedo crear una consulta que me devuelva sólo la analítica más reciente de cada paciente?

1 respuesta

Respuesta
1
La base de datos, tal y como esta diseñada, no permite hacer este tipo de consultas de una forma simple, de hecho pienso que deberías replantearte el rehacer la base de datos para que funcionase perfectamente, el hacer apaños cuando tienes una base de datos con muchos datos tiene un pase, pero si todavía no tienes demasiados y si la base no se ha empezado a complicar te aconsejaría (de nuevo) que la rehagas. Ejemplo:
En lugar de una tabla: tres tablas (PACIENTES, CONSULTAS, DATOS DE CONSULTAS). Y por supuesto jugar con las relaciones que para eso están.
De todas formas, si no sabes o no puedes(falta de tiempo o lo que sea), te he chapuzeado dos consultas para obtener lo que quieres. Para facilitar la introducción crea las consultas y luego vete a vista SQL para pegar lo que aquí te pongo:
1 CONSULTA ("Máximos de fechas con nombres").
SELECT Tabla1.nombre, Max(Tabla1.fecha) AS MáxDefecha
FROM Tabla1
GROUP BY Tabla1.nombre;
2 CONSULTA ("Ultima consulta").
SELECT Tabla1.nombre, Tabla1.fecha, Tabla1.uno, Tabla1.id
FROM [Maximos de fechas con nombres] INNER JOIN Tabla1 ON ([Maximos de fechas con nombres].nombre = Tabla1.nombre) AND ([Maximos de fechas con nombres].MáxDefecha = Tabla1.fecha);
NOTA1: La tabla con mis datos se llama Tabla1. Sustitúyelo por el nombre de tu tabla.
NOTA2: Para simplificar solo tengo un campo de datos llamado "uno", en la vista diseño de la segunda consulta, después de pegar el SQL, puedes añadir todos los campos que tengas en tu tabla.
NOTA3: Los campos puedn no llamarse igual, los he abreviado para que me resultase más rápido realizarla... revisa también estos nombres.
Muchas gracias, me has resuelto el problema. Es que yo no sé manejar la base usando SQL, pero no me va a quedar más remedio que aprender, porque ya tiene muchos datos. De todas formas sí que tengo una tabla Pacientes y otra que es la que te he mencionado "Detalles Analíticas", la que no sé es cual correspondería a la que tú mencionas como "Consultas", a no ser que no tuviera que ver con la consulta que yo quería realizar.
También te quería preguntar: en la tabla Pacientes, cuyo único campo es el de los nombres, y que son siempre diferentes, ése es la clave principal, pero ¿debería tener un campo ID que fuera la clave principal?
No te hace falta aprender SQL, pero para hacer algunas cosas, la organización que ahora mismo tiene dificulta un poco las cosas, pero la mayoría de cosas se pueden hacer tal y como lo tienes, pero complicándolo un poco, sino sabes como hacer algo, solamente pregunta...
Sobre la organización de la base de datos yo la realizaría así.
TABLA PACIENTE(IDPAC, nombre, apellidos, DNI, NSS, etc)
TABLA CONSULTAS(IDCONSULTA, IDPAC, fechaconsulta, etc)
TABLA DETALLE ANALITICA(IDDETALLE, IDCONSULTA, datosanalitica, etc).
En la tabla pacientes: IDPAC autonumérico y campo clave.
En la tabla consultas: IDCONSULTA autonumérico y campo clave.
En la tabla detalle: IDDETALLE autonumérico y campo clave.
Los campos IDPAC e IDCONSULTA que aparecen en la tabla consulta y detalle, respectivamente, numéricos.
Después se relacionan y con ello ya tendrías la base casi perfecta(bastante bien diría yo).
De todas formas, si te funciona no lo cambies si no quieres, y si lo cambias haz una copia y trabaja mejor sobre la copia no vaya a ser que pierdas los datos sin quieres.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas