Foro

Obtener la fecha mas reciente

0
Hola, quisiera que alguno me pudiera echar una manito con la siguiente consulta en MySql: tengo una tabla con informacion de neumaticos, digamos asi: neumaticos ========= id_neumatico medida marca en otra tabla aparecen los neumaticos que corresponden a un vehiculo y su posicion neumaticos_vehiculo ============== id_vehiculo (de otra tabla con los vehiculos) id_neumatico posicion y otra con su historial (cuando han entrado, o sea se colocaron) en el vehiculo, o cuando se retiro de el mismo, que kms tenia ese vehiculo en particular en ese momento, en que posicion, y que profundidades tenia el neumatico historial ======= id_neumatico vehiculo posicion kms_vehiculo fecha evento profundidad_exterior profundidad_media profundidad_interior los eventos pueden ser: entrante saliente rotacion chequeo el sentido de estas tablas es mantener un registro del neumatico, su "vida" a lo largo de varios cambios. El problema es que necesito saber cuales son las ultimas profundidades registradas. Por logica deberia ser la de la ultima fecha del ultimo evento de "entrante". Con la sgte consulta logro obtener todos los neumaticos de un vehiculo en particular pero no puedo obtener la ultima profundidad SELECT inv.codigo, nv.posicion, ht.prof_ext, ht.prof_med, ht.prof_int, ht.fecha FROM neumaticos_vehiculos nv LEFT JOIN neumaticos_inventario inv ON inv.id_interno = nv.id_neumatico LEFT JOIN neumaticos_historial ht ON ht.id_neumatico = nv.id_neumatico AND ht.movimiento = 'cambio_entrante' WHERE nv.id_vehiculo = 95 ORDER BY nv.posicion, ht.fecha DESC En la imagen adjunta muestro en rojo los registros que me deberia devolver solamente llevo días detenido en esto y cualquier luz será agradecida ;)
0
Hola Tokkaido, yo necesité algo similar a lo que pides, sólo que con la fecha más antigua. Aqui te paso el link con la respuesta que me dieron en un foro, que por cierto lo recomiendo ampliamente. http://www.dbasupport.com.mx/index.php?option=com_kunena&Itemid=0&func=view&catid=25&id=1896 Saludos
0
al final hice lo siguiente, puede que no sea lo "optimo" pero funciona, de hecho me hace la consulta mucho mas pequeña y menos complicada: como cada vez que agrego un neumático se actualizan 2 tablas, el historial del neumático y la tabla neumaticos_vehiculos que lleva el registro de que neumáticos están en que vehículos y en que posición, fue a esta tabla que le agregue un campo ultima_fecha que registra la fecha del ultimo evento "cambio_entrante" asi solo hago un left join con las fechas. un truquillo pero util ;)
0
Muy interesante lo que planteas. El problema aqui por lo que puedo ver es no puedes usar la funcion MAX de MySQL ya que solamente te retorna una sola fecha, que en tu caso es la mas reciente. Ahora bien, quiza una manera de solucionarlo seria realizando dos consultas: 1) Obtener la fecha maxima, 2) Usar ese valor como parametro para realizar la consulta que aqui planteas. Esa seria mi humilde solucion. Quiza ya lo hayas considerado.
0
la imagen de nuevo porqu cuando edito el post se pierde :(
0
a quien se quiera tomar la molestia he aqui un poco de data para hacer el ejercicio SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for vehiculos -- ---------------------------- DROP TABLE IF EXISTS `vehiculos`; CREATE TABLE `vehiculos` (   `id_interno` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,   `numero` VARCHAR(3) COLLATE utf8_spanish_ci NOT NULL,   `patente` VARCHAR(7) COLLATE utf8_spanish_ci NOT NULL,   PRIMARY KEY (`id_interno`),   UNIQUE KEY `id_interno_idx` (`id_interno`) USING BTREE,   UNIQUE KEY `numero_idx` (`numero`) USING BTREE,   UNIQUE KEY `patente_idx` (`patente`) USING BTREE ) ENGINE=INNODB AUTO_INCREMENT=177 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;   -- ---------------------------- -- Records -- ---------------------------- INSERT INTO `vehiculos` VALUES ('1', '27', 'EB95064'); INSERT INTO `vehiculos` VALUES ('2', '58', 'SU2124K'); INSERT INTO `vehiculos` VALUES ('4', '60', 'TB39596'); INSERT INTO `vehiculos` VALUES ('10', '61', 'TA45354'); INSERT INTO `vehiculos` VALUES ('11', '62', 'TJ97006'); INSERT INTO `vehiculos` VALUES ('12', '66', 'TV9895K'); INSERT INTO `vehiculos` VALUES ('95', '59', 'TB39588'); SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for neumaticos_inventario -- ---------------------------- DROP TABLE IF EXISTS `neumaticos_inventario`; CREATE TABLE `neumaticos_inventario` (   `id_interno` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,   `codigo` SMALLINT(11) UNSIGNED DEFAULT NULL,   `prof_ext_inicial` DECIMAL(3,1) UNSIGNED NOT NULL,   `prof_med_inicial` DECIMAL(3,1) UNSIGNED NOT NULL,   `prof_int_inicial` DECIMAL(3,1) UNSIGNED NOT NULL,   `kms_inicial` INT(11) UNSIGNED NOT NULL,   PRIMARY KEY (`id_interno`),   UNIQUE KEY `id_interno_idx` (`id_interno`) USING BTREE,   UNIQUE KEY `codigo_idx` (`codigo`) USING BTREE ) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;   -- ---------------------------- -- Records -- ---------------------------- INSERT INTO `neumaticos_inventario` VALUES ('1', '3251', '15.0', '15.0', '15.0', '99120'); INSERT INTO `neumaticos_inventario` VALUES ('2', '3250', '15.0', '15.0', '15.0', '99120'); INSERT INTO `neumaticos_inventario` VALUES ('3', '3236', '15.0', '15.0', '15.0', '105438'); INSERT INTO `neumaticos_inventario` VALUES ('4', '3287', '15.0', '15.0', '15.0', '105438'); INSERT INTO `neumaticos_inventario` VALUES ('5', '3333', '15.0', '15.0', '15.0', '101000'); INSERT INTO `neumaticos_inventario` VALUES ('6', '3332', '15.0', '15.0', '15.0', '105438'); SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for neumaticos_vehiculos -- ---------------------------- DROP TABLE IF EXISTS `neumaticos_vehiculos`; CREATE TABLE `neumaticos_vehiculos` (   `id_interno` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,   `id_neumatico` INT(11) UNSIGNED NOT NULL,   `id_vehiculo` INT(11) UNSIGNED NOT NULL,   `posicion` TINYINT(6) UNSIGNED NOT NULL,   PRIMARY KEY (`id_interno`),   UNIQUE KEY `id_interno` (`id_interno`) USING BTREE,   UNIQUE KEY `id_neumatico` (`id_neumatico`),   UNIQUE KEY `id_pos_veh` (`posicion`,`id_vehiculo`),   KEY `id_vehiculo_idx` (`id_vehiculo`),   CONSTRAINT `neumaticos_vehiculos_ibfk_1` FOREIGN KEY (`id_neumatico`) REFERENCES `neumaticos_inventario` (`id_interno`) ON UPDATE CASCADE,   CONSTRAINT `id_neumatico_vehiculo_fk` FOREIGN KEY (`id_vehiculo`) REFERENCES `vehiculos` (`id_interno`) ON UPDATE CASCADE ) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;   -- ---------------------------- -- Records -- ---------------------------- INSERT INTO `neumaticos_vehiculos` VALUES ('1', '1', '95', '1'); INSERT INTO `neumaticos_vehiculos` VALUES ('2', '2', '95', '2'); INSERT INTO `neumaticos_vehiculos` VALUES ('3', '3', '95', '3'); INSERT INTO `neumaticos_vehiculos` VALUES ('4', '4', '95', '4'); INSERT INTO `neumaticos_vehiculos` VALUES ('5', '5', '95', '5'); INSERT INTO `neumaticos_vehiculos` VALUES ('6', '6', '95', '6'); SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for neumaticos_historial -- ---------------------------- DROP TABLE IF EXISTS `neumaticos_historial`; CREATE TABLE `neumaticos_historial` (   `id_interno` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,   `id_vehiculo` INT(11) UNSIGNED NOT NULL,   `kms_vehiculo` INT(11) NOT NULL,   `fecha` DATE NOT NULL,   `posicion` SMALLINT(6) NOT NULL,   `id_neumatico` INT(11) UNSIGNED NOT NULL,   `prof_ext` DECIMAL(3,1) NOT NULL,   `prof_med` DECIMAL(3,1) NOT NULL,   `prof_int` DECIMAL(3,1) NOT NULL,   `movimiento` VARCHAR(30) COLLATE utf8_spanish_ci NOT NULL,   PRIMARY KEY (`id_interno`),   UNIQUE KEY `id_interno_idx` (`id_interno`),   KEY `id_vehiculo_idx` (`id_vehiculo`),   KEY `id_neumatico_idx` (`id_neumatico`),   CONSTRAINT `neumaticos_historial_ibfk_1` FOREIGN KEY (`id_neumatico`) REFERENCES `neumaticos_inventario` (`id_interno`) ON UPDATE CASCADE,   CONSTRAINT `neumaticos_historial_ibfk_2` FOREIGN KEY (`id_vehiculo`) REFERENCES `vehiculos` (`id_interno`) ON UPDATE CASCADE ) ENGINE=INNODB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;   -- ---------------------------- -- Records -- ---------------------------- INSERT INTO `neumaticos_historial` VALUES ('1', '13', '10000', '2011-01-01', '1', '1', '15.0', '15.0', '15.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('2', '13', '20000', '2011-02-01', '1', '1', '14.0', '14.0', '14.0', 'cambio_saliente'); INSERT INTO `neumaticos_historial` VALUES ('3', '10', '40000', '2011-03-01', '3', '1', '14.0', '14.0', '14.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('4', '10', '70000', '2011-04-01', '3', '1', '10.0', '10.0', '10.0', 'cambio_saliente'); INSERT INTO `neumaticos_historial` VALUES ('5', '95', '50000', '2011-05-01', '1', '1', '10.0', '10.0', '10.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('6', '13', '12000', '2011-01-10', '2', '2', '15.0', '15.0', '15.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('7', '13', '20000', '2011-02-01', '2', '2', '14.0', '14.0', '14.0', 'cambio_saliente'); INSERT INTO `neumaticos_historial` VALUES ('8', '12', '40000', '2011-03-11', '4', '2', '14.0', '14.0', '13.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('9', '12', '50000', '2011-04-11', '4', '2', '11.0', '11.0', '12.0', 'cambio_saliente'); INSERT INTO `neumaticos_historial` VALUES ('10', '95', '50000', '2011-05-01', '2', '2', '11.0', '11.0', '12.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('11', '13', '10000', '2011-01-01', '3', '3', '15.0', '15.0', '15.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('12', '13', '20000', '2011-02-01', '3', '3', '14.0', '14.0', '14.0', 'cambio_saliente'); INSERT INTO `neumaticos_historial` VALUES ('13', '95', '50000', '2011-05-01', '3', '3', '14.0', '14.0', '14.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('14', '13', '10000', '2011-01-01', '4', '4', '15.0', '15.0', '15.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('15', '13', '20000', '2011-02-01', '4', '4', '13.0', '13.0', '13.0', 'cambio_saliente'); INSERT INTO `neumaticos_historial` VALUES ('16', '95', '50000', '2011-05-01', '4', '4', '13.0', '13.0', '13.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('17', '95', '50000', '2011-05-01', '4', '4', '15.0', '15.0', '15.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('18', '95', '50000', '2011-05-01', '5', '5', '15.0', '15.0', '15.0', 'cambio_entrante'); INSERT INTO `neumaticos_historial` VALUES ('19', '95', '50000', '2011-05-01', '6', '6', '15.0', '15.0', '15.0', 'cambio_entrante');

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.