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

Union que NO toma valor maximo

Estas en el tema de Union que NO toma valor maximo en el foro de Mysql en Foros del Web. Hola todos, Tengo en mi base de datos MySQL una tabla que contiene "paquetes" y otra que contiene el "historial de los status" en que ...
  #1 (permalink)  
Antiguo 06/05/2009, 15:33
 
Fecha de Ingreso: abril-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Union que NO toma valor maximo

Hola todos, Tengo en mi base de datos MySQL una tabla que contiene "paquetes" y otra que contiene el "historial de los status" en que han estado dichos paquetes, con un id que relaciona los status con cada paquete, un campo "fecha" y un campo numérico que indica el status. Quiero UNIR (JOIN) ambas tablas de manera que se muestren los "paquetes" pero solo el mayor de los estados del historial, quiero mostrar:
-Paquete (de tabla 1)
-Status (el mayor de todos los registrados en la tabla 2)
-Fecha (del estatus mayor de tabla 2)

Esta es la consulta que estoy usando, sin éxito, porque muestra la fecha del primer status que consigue y no del más alto,

SELECT paquetes.* track.status, track.fecha FROM paquetes JOIN (SELECT * FROM tracking GROUP BY paquete_id ORDER BY status DESC) track ON track.paquete_id=paquetes.paquete_id

Me pueden ayudar, por favor?

Gracias de antemano
  #2 (permalink)  
Antiguo 06/05/2009, 18:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Union que NO toma valor maximo

Para controlar las posibles coincidencias, es decir, que dos paquete_id distintos tengan el mismo status y fecha máximos, te aconsejo una sintaxis como esta (he pensado que hay un campo paquete en la tabla paquetes):
Código sql:
Ver original
  1. SELECT paquetes.paquete, t2.paqu, t2.statu, t2.fech FROM paquetes INNER JOIN
  2.   (SELECT t1.paq paqu, t1.stat statu, MAX(fecha) fech FROM tracking
  3.     INNER JOIN (SELECT paquete_id paq, MAX(STATUS) stat FROM `tracking` GROUP BY paquete_id)t1
  4.      ON T1.paq=tracking.paquete_id AND t1.stat = tracking.STATUS GROUP BY paquete_id)t2
  5.      ON T2.paqu=paquetes.paquete_id ORDER BY paquetes.paquete_id

Si no hiciera falta traerse datos de la tabla paquetes, podríamos quitar una "capa a la cebolla" de esta consulta.
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 15:39.