2 messages in com.mysql.lists.mysql-esRe: Seleccionar casos según valor maximo
FromSent OnAttachments
Alvaro Cobo03 Oct 2006 15:24 
Alvaro Cobo03 Oct 2006 15:57 
Subject:Re: Seleccionar casos según valor maximo
From:Alvaro Cobo (cobo@gmail.com)
Date:10/03/2006 03:57:57 PM
List:com.mysql.lists.mysql-es

Galo:

Eres lo máximo!. Funciona a las mil maravillas!.

Muchas gracias.

Alvaro

Galo Izquierdo escribió:

select t.* from test t where t.año = (select max(f.año) from test f where f.fk_id=t.fk_id ) group by t.FK_id

Prueba esto

-----Mensaje original----- De: Alvaro Cobo [mailto:cobo@gmail.com] Enviado el: Martes, 03 de Octubre de 2006 17:24 Para: mysq@lists.mysql.com Asunto: Seleccionar casos según valor maximo

Hola chicos y chicas:

Tengo la siguiente tabla con los siguientes valores de ejemplo: +-------+------+-------+ | FK_id | año | valor | +-------+------+-------+ | CasoA | 2004 | 30 | | CasoA | 2005 | 10 | | CasoB | 2005 | 12 | | CasoC | 2007 | 8 | | CasoB | 2006 | 14 | +-------+------+-------+

Lo que necesito es seleccionar solamente los datos correspondientes a los años máximos para cada caso en FK_id.

Basados en el ejemplo, necesitaría que el resultado fuera el siguiente (porque corresponden al año máximo para cada caso):

+-------+------+-------+ | FK_id | año | valor | +-------+------+-------+ | CasoA | 2005 | 10 | | CasoC | 2007 | 8 | | CasoB | 2006 | 14 | +-------+------+-------+

La musa inspiradora no ha llegado el día de hoy y no tengo la más peregrina idea de por donde empezar. Les agradeceré cualquier pista que me conduzca a esclarecer este problema.

Muchas gracias por anticipado y un abrazo fraterno,

Alvaro.

Detalles del servidor: MySQL versión 5.0.21, Debian Sarge.

CREATE TABLE `test` ( `FK_id` varchar(10) NOT NULL, `año` year(4) NOT NULL, `valor` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `test` VALUES ('CasoA', 2005, 10); INSERT INTO `test` VALUES ('CasoB', 2005, 12); INSERT INTO `test` VALUES ('CasoA', 2006, 8); INSERT INTO `test` VALUES ('CasoB', 2006, 14); INSERT INTO `test` VALUES ('CasoA', 2004, 30);