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

Consulta sobre una tabla con varias condiciones

Estas en el tema de Consulta sobre una tabla con varias condiciones en el foro de Mysql en Foros del Web. Hola a tod@s, Llevo varios días dandole vuelta a una consulta sobre una tabla... aparentemente sencilla, y seguro lo sea, pero en la cual estoy ...
  #1 (permalink)  
Antiguo 27/08/2011, 05:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Consulta sobre una tabla con varias condiciones

Hola a tod@s,

Llevo varios días dandole vuelta a una consulta sobre una tabla... aparentemente sencilla, y seguro lo sea, pero en la cual estoy un poco enfrascao.
a ver si me podeis echar un cable...

La tabla tiene la siguiente estructura:

id_user (int) ----- id_tarifa (int) ------ fecha_aplicacion (date)
1 --------------- 1 --------------- 01-01-2010
1 --------------- 2 --------------- 01-03-2010
1 --------------- 3 --------------- 01-08-2010
2 --------------- 1 --------------- 01-01-2010
2 --------------- 3 --------------- 01-03-2010
3 --------------- 1 --------------- 01-01-2010

(siendo PK: id_user,id_tarifa, fecha_aplicacion)

y necesito hacer una consulta que me devuelva esto:

id_user -------- id_tarifa -------- fecha_aplicacion
1 --------------- 3 --------------- 01-08-2010
2 --------------- 3 --------------- 01-03-2010
3 --------------- 1 --------------- 01-01-2010

Necesito saber que tarifa se le está aplicando actualmente a cada usuario... es decir... para cada usuario que busque la fecha máxima... y que me devuelva el id_tarifa correspondiete a ese registro.

Entiendo que los criterios, de algún modo, serán seleccionar la fecha máxima para cada usuario, y de algún modo que lo agrupe (para el usuario x la fecha maxima será y).

si hago la consulta tipo:

"SELECT id_user, id_tarifa, max(fecha) FROM tabla GROUP BY id_user"

me devuelve un solo registro por cada usuario... con la fecha máxima... y con la primera tarifa que encuentra para ese usuario (o la primera que encuetra se la aplica a todos)... lo cual no se corresponde con la tarifa actual... comprendo porque no funciona asi, ya que en ningún momento le digo que hacer con el id_tarifa... y me devuelve lo primero que encuetra... ok.. asi incorrecto.

He probado con INNER JOIN de la misma tabla, subconsutlas... y no se que más.. ya he estado mirando por aki (y por otros foros) y no doy encontrado lo que busco......

En fin.. a ver si alguien sabe como hacer la consulta o me podeis indicar pistas de por donde tirar.

Muchas gracias a tod@s.
  #2 (permalink)  
Antiguo 28/08/2011, 04:17
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Solucionado

he aki la respuesta:

SELECT t1.id_usuario, t1.id_tarifa, t1.fecha
from tabla as t1
inner join (
select id_usuario, max(fecha) as fecha
from tabla
group by id_usuario) as t2
on t1.id_usuario=t2.id_usuario
and t1.fecha = t2.fecha

Gracias a los que habeis echado un vistazo... y gracias carlos, no era tan complicao.. pero cuando se lia y no ves mas allá... estás fastidiao!

Etiquetas: condiciones, join, select, tabla
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 16:57.