Ayuda para realizar una búsqueda en una tabla de access según condición de datos

Amigo buenas Tardes
Necesito ayuda
Tengo una base de datos para una asignación automática.
Deseo realizar una búsqueda en una tabla por especialidad.
La tabla se llama Base general
Y los campos son id_asignacion, Especialidad, Nom_especialista, cliente, fecha de asignación, entre otros.
La tabla base tiene N registros
La consulta cosiste en buscar cual fue el último especialista dependiendo la especialidad que se busque en ese momento.
Ejemplo
1 - investigador - Oscar Molina-Carlos Pérez - 24-08-2011
2 - Ajustador - Carlos Muñoz- pedro carrillo - 24-08-2011
3 - investigador - Ignacio Mendosa - Carlos Pérez - 24-08-2011
4 - N registros
La idea es que en un botón del formulario de ingreso de registro de la tabla base me busque cual fue el ultimo especialista y dependiendo de la especialidad.
Por ejemplo buscar el ultimo especialista "Ajustador" y me debe traer Carlos Muños y es Ajustador.
Después de esto ir a buscar en la tabla de especialistas el especialista buscardo y traerme el siguiente en un campo del formulario.
Gracias si me puede ayudar

1 Respuesta

Respuesta
1
Deberías tener los datos separados en dos tablas: especialista y partes. Unidas por el campo ID del especialista.
De esta manera sería sencillo hacer una consulta con las dos tablas en la que agrupas por nombre de especialista, fuerzas a que te de la fecha última en que ha trabajado cada uno y pones como condición la especialidad deseada.
El código SQL sería:
SELECT Personas.nombre_completo, Max(partes_averia.fecha_entrada) AS ultima_fecha_entrada
FROM partes_averia INNER JOIN Personas ON partes_averia.persona_id = Personas.Id
WHERE (((Personas.especialidad)="mecánico"))
GROUP BY Personas.nombre_completo
ORDER BY Max(partes_averia.fecha_entrada);
En el resultado de esta consulta el especialista que sale primero es tu hombre. Si quieres que sólo te salga sólo ese fuerzas con TOP 1. Así:
SELECT TOP 1 Personas.nombre_completo, Max(partes_averia.fecha_entrada) AS MáxDefecha_entrada
FROM partes_averia INNER JOIN Personas ON partes_averia.persona_id = Personas.Id
WHERE (((Personas.especialidad)="mecánico"))
GROUP BY Personas.nombre_completo
ORDER BY Max(partes_averia.fecha_entrada);
Te pongo una captura de pantalla en mi página web para que lo veas en modo diseño:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas