¿Cómo creo una consulta en mi base de datos que muestre el ultimo registro de cada cliente?

Necesito ayuda en la creación de una consulta con Access 2007.
Te explicaré brevemente el contexto para que te vayas situando.
Estoy creando una base de datos en la que una de las tablas que la componen es una especie de "historial"; en ella encontramos registros que contienen información acerca de clientes en unas fechas dadas. A continuación te describo algunos de los campos con los que necesito trabajar:
Campo 1: Es un campo Autonumérico; simplemente guarda un número de referencia (evidentemente). En principio será la clave de esta tabla.
Campo 2: Es un campo de Fecha en el que se almacena tanto la fecha como la hora; como muchas entradas de las que se registran ocurren el mismo día y hora hay muchas fechas que se repiten.
Campo 3: Cliente; Este campo hace referencia al cliente al cual pertenece la información del registro. Estos clientes están almacenados en otra tabla cuyo campo clave es su número de identificación y está relacionada con esta tabla con una relación "uno a varios".
Lo que yo necesito es crear una consulta en la que se muestre el último registro (si existe) de cada cliente para cada uno de los clientes que tengo en la tabla "clientes".
¿Es posible hacer esto utilizando los criterios de una consulta? ¿Cómo debo definir los criterios?
¿Debería establecer en la tabla historial un campo clave doble utilizando los campos "Fecha" y "Cliente"?
Soy un poco novato en esto del Access pero espero haberte dado toda la información necesaria para que me resuelvas la duda. Si necesitas más datos dímelo a ver si te se explicar mejor.
Un saludo y gracias por anticipado.
{"lat":87.1147576363384,"lng":75.7968664169312}

1 Respuesta

Respuesta
1
Si se hace con las opciones de agrupamiento de las consultas.
Yo suelo utilizar casi nunca los autonuméricos, este es un caso en el que es clásico utilizarlo como clave y lo que hace de clave lógica es Cliente|FechaHora, para esquivar esto y sacar el id autonumérico se complica la cosa, en lugar de hacerlo sólo con una consulta hay que hacerlo con dos.
Te pego el SQL de las consultas con los nombres de campos que has utilizado, campo1, campo2 y campo3 y luego lo personalizas, a la tabla la he llamado TablaDatos
Consulta1 (Guardala con este nombre, para el SQL de la Consulta2, luego lo personalizas)
SELECT Max(TablaDatos.Campo2) AS MáxDeCampo2, TablaDatos.Campo3
FROM TablaDatos
GROUP BY TablaDatos.Campo3;
Consulta2
SELECT TablaDatos.Campo1, TablaDatos.Campo2, TablaDatos.Campo3
FROM TablaDatos INNER JOIN Consulta1 ON (Consulta1.Campo3 = TablaDatos.Campo3) AND (TablaDatos.Campo2 = Consulta1.MáxDeCampo2);
Con lo que decía del Id, y la clave por Cliente|FechaHora habría bastado la primera consultas. No sé el nivel de desarrollo de tu base de datos, la utilidad que le puedes ver a considerar otras claves, yo aconsejo casi siempre huir de los autonuméricos, a la larga te puede evitar quebraderos de cabeza.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas