Access - Consulta de agrupacion access

 
Vista:
sin imagen de perfil

Consulta de agrupacion access

Publicado por FERNANDO (5 intervenciones) el 17/03/2023 13:11:49
Buen día, les planteo mi problema:

Tengo una tabla con los movimientos de un hotel:

TABLA movimientos:

Imagen1

Por otro lado tengo el resto de tablas que se vinculan a esta:

Imagen2



La idea es que mediante una consulta de agrupación access me deje los registros con la fecha de actualizacion mas reciente.
Cuando configuro la consulta le indico que me agrupe por la columna "nombre" y le indico que me regrese el MAX de la columna Fecha y le agrego los campos "movimiento_tipo", "empresa" y "habitacion".
La estructura es la siguiente:

Imagen5

El problema es que me trae los resultados agrupados, pero los campos "movimiento_tipo", "empresa" y "habitacion" que trae no se corresponden con la fila de esa fecha, sino que trae los últimos de la tabla movimientos.

Adjunto el archivo, espero puedan ayudarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta de agrupacion access

Publicado por Anonimo (3316 intervenciones) el 17/03/2023 13:45:01
En base a la imagen:

Se tiene que agrupar por aquellos campos que en conjunto definan un resultado, cambiar lo de 'ultimo' por 'Agrupar por' y si no se desea agrupar por esa cualidad: el campo sobra.

La fecha es quien define el mas reciente de cada subconjunto de esa agrupación.

Esto es: la fecha mas reciente de cada cliente en su (entrada, salida, empresa y habitación).

Creo que esa agrupación con tantas condiciones devolverá todos los registros y en el mejor de los casos solo agruparía si algún cliente repite la misma habitación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta de agrupacion access

Publicado por FERNANDO (5 intervenciones) el 17/03/2023 14:04:56
Pero el tema es si no quiero agrupar por algunos campos, pero si que devuelva el campo (ejemplo habitación, empresa, movimiento) cómo hago?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Consulta de agrupacion access

Publicado por Eduardo (317 intervenciones) el 17/03/2023 17:15:40
Fernando de dejo esta consulta: Como le dicen se incluirán todos los registros, al menos que se repita habitación, huesped y empresa.

DISEÑO DE LA CONSULTA:

ultimaFechaHabitacion_00

RESULTADO DE LA CONSULTA:


ultimaFechaHabitacion_01

SCRIPT SQL DE LA CONSULTA:

1
2
3
4
5
6
SELECT movimientos.movimiento_tipo, habitaciones.nombre_completo, MAX(movimientos.fecha) AS fecha_mas_reciente, huespedes.nombre AS nombre_huesped, empresas.nombre AS nombre_empresa
FROM ((movimientos
INNER JOIN habitaciones ON movimientos.id_habitacion = habitaciones.id)
INNER JOIN huespedes ON movimientos.id_huesped = huespedes.id)
INNER JOIN empresas ON movimientos.id_empresa = empresas.id
GROUP BY movimientos.movimiento_tipo, habitaciones.nombre_completo, huespedes.nombre, empresas.nombre;

Espero le sirva. Un saludo desde Colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta de agrupacion access

Publicado por FERNANDO (5 intervenciones) el 17/03/2023 17:35:17
Buenas, gracias por su respuesta!
El tema es que no cumple con el objetivo de que me traiga el último movimiento de cada huesped (fecha mas cercana)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Consulta de agrupacion access

Publicado por Eduardo (317 intervenciones) el 17/03/2023 19:03:24
Entonces está mal formulada su pregunta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta de agrupacion access

Publicado por FERNANDO (5 intervenciones) el 17/03/2023 19:10:51
Tenés razón, te pido disculpas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de agrupacion access

Publicado por Anonimo (3316 intervenciones) el 17/03/2023 19:54:20
En base a los nuevos datos aportados:

Crea una consulta de agrupación sobre la tabla [movimientos]

Solo dos campos: ID_Huéeped] + [Fecha]

Agrupa por el ID y en fecha la mayor (se obtendrá para cada cliente su ultima estancia).

Una consulta con esta tabla y la de movimientos (relacionándolas por ambos campos, esto es: una doble relación de igualdad) y se obtiene un único registro por huésped de la tabla movimientos y todos sus datos..

A esta consulta se le pueden añadir el resto de tablas para obtener de ellas el dato asociado al ID (del huésped el nombre, teléfono ...).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Consulta de agrupacion access

Publicado por FERNANDO (5 intervenciones) el 17/03/2023 20:23:50
Muchas gracias!

Funcionó perfectamente!

Si o si debo tener dos consultas para logarlo, o puedo unificar amabas en un mismo código SQL?

Las consultas quedaron así:

CONSULTA 1:


SELECT
movimientos.id_huesped,
Max(movimientos.fecha) AS MáxDefecha
FROM movimientos
GROUP BY movimientos.id_huesped;

CONSULTA 2:


SELECT
movimientos.fecha,
movimientos.hora,
huespedes.nombre,
movimientos.movimiento_tipo,
movimientos.id_habitacion,
empresas.nombre
FROM empresas INNER JOIN (huespedes INNER JOIN (consulta_ultMov INNER JOIN movimientos ON (consulta_ultMov.MáxDefecha = movimientos.fecha) AND (consulta_ultMov.id_huesped = movimientos.id_huesped)) ON huespedes.Id = movimientos.id_huesped) ON empresas.Id = movimientos.id_empresa;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar