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

Consultar en tablas relacionadas y hacer sólo una consulta

Estas en el tema de Consultar en tablas relacionadas y hacer sólo una consulta en el foro de Mysql en Foros del Web. Buenos días tengo dos tablas: Código: empleados: empleado_id | empleado_nombre datos: datos_id | empleado_id | fecha_inicio | fecha_fin | descripcion En la tabla datos se ...
  #1 (permalink)  
Antiguo 17/08/2011, 08:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta Consultar en tablas relacionadas y hacer sólo una consulta

Buenos días tengo dos tablas:


Código:
empleados:
empleado_id  |  empleado_nombre

datos:
datos_id  |  empleado_id  |  fecha_inicio  |  fecha_fin  |  descripcion
En la tabla datos se guardan los trabajos realizados por los empleados, con fecha de inicio y fin, los trabajos se registran y pueden ser muchos durante un mes.

Quiero extraer el último trabajo realizado por cada trabajador, y mostrar su descripción.

Es fácil hacerlo con 2 consultas, simultáneas en un ciclo while, pero quiero optimizar el trabajo de la rutina y hacerlo con sólo una consulta. He tratado relacionando las tablas, pero aún no me funciona.


¿Será posible que me puedan ayudar?


Gracias colegas.
  #2 (permalink)  
Antiguo 17/08/2011, 08:22
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consultar en tablas relacionadas y hacer sólo una consulta

Hola lordchile:

Este tipo de consultas se ha tratado muchas veces en el foro... obtener el último registro es una consulta recurrente entre los foristas. Siempre es recomendable utilizar la herramienta de búsqueda que proporciona el foro para ver si puedes dar con la solución.

hay varias formas de obtener lo que quieres una de las más comunes es obtener en una subconsulta las fechas máximas pára cada empleado y agregar un INNER JOIN a la consulta,

Código MySQL:
Ver original
  1. SELECT empleado_id, MAX(fecha_fin) max_fecha_fin
  2. FROM datos
  3. GROUP BY empleado_id.

Con esta consulta estarías obteniendo la fecha del último trabajo para cada empleado.

Ahora bien, para unir tus dos tablas supongo que haces algo como esto

Código MySQL:
Ver original
  1. SELECT e.*, d.* FROM empleados e
  2. INNER JOIN datos d ON e.empleado_id = d.empleado_id


Esto te regresaría todos los trabajos del empleado, pero puedes agregas un INNER JOIN con la consulta donde obtienes el MAX(fecha_fin) para filtrar los registros.

Haz el intento de hacer la consulta, si tienes problemas busca en el foro "obtener último registro", te encontrarás varios post donde hemos tratado consultas semejantes... si continuas con problemas postea algo de lo que tienes hecho para ayudarte a afinar la consulta

Saludos
Leo.

Etiquetas: consultar, relacionadas, tabla, tablas
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 22:36.