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

fusionar filas pro fecha

Estas en el tema de fusionar filas pro fecha en el foro de Mysql en Foros del Web. Buenas tardes, puede alguien ayudarme con la siguiente consulta? necesito que el resultado de una consulta de cambios y rellenos de aceite me muestre en ...
  #1 (permalink)  
Antiguo 21/08/2012, 17:00
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 15 años, 4 meses
Puntos: 4
fusionar filas pro fecha

Buenas tardes, puede alguien ayudarme con la siguiente consulta?

necesito que el resultado de una consulta de cambios y rellenos de aceite me muestre en una sola fila por fecha los litros de relleno y los litros de cambio si es que hubo tales en la misma fecha. para mas claridad les adjunto un ejemplo:

Código MySQL:
Ver original
  1. CREATE TABLE `aceites` (
  2.   `fecha` date NOT NULL,
  3.   `tipo` varchar(10) COLLATE utf8_spanish_ci NOT NULL,
  4.   `litros` int(11) NOT NULL,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
  7.  
  8. -- ----------------------------
  9. -- Records of aceites
  10. -- ----------------------------
  11. INSERT INTO `aceites` VALUES ('1', '2012-02-09', 'RELLENO', '2');
  12. INSERT INTO `aceites` VALUES ('2', '2012-03-05', 'RELLENO', '2');
  13. INSERT INTO `aceites` VALUES ('3', '2012-03-26', 'RELLENO', '4');
  14. INSERT INTO `aceites` VALUES ('4', '2012-03-31', 'CAMBIO', '20');
  15. INSERT INTO `aceites` VALUES ('5', '2012-04-14', 'RELLENO', '2');
  16. INSERT INTO `aceites` VALUES ('6', '2012-07-31', 'CAMBIO', '20');
  17. INSERT INTO `aceites` VALUES ('7', '2012-08-13', 'RELLENO', '1');
  18. INSERT INTO `aceites` VALUES ('8', '2012-08-13', 'CAMBIO', '20');
  19. INSERT INTO `aceites` VALUES ('9', '2012-08-14', 'RELLENO', '2');
  20. INSERT INTO `aceites` VALUES ('10', '2012-03-05', 'CAMBIO', '10');

como pueden ver en los datos, el día 05 de marzo y el día 13 de agosto se produjo un relleno y un cambio en el mismo día, en el resto de los días no.

si realizo la siguiente consulta:

Código MySQL:
Ver original
  1. r.fecha,
  2. IF(r.tipo='RELLENO',r.litros,NULL) AS LTS_RELLENO,
  3. IF(c.tipo='CAMBIO',c.litros,NULL) AS LTS_CAMBIO
  4. FROM aceites AS c
  5. INNER JOIN aceites AS r ON r.fecha = c.fecha

el resultado es "casi" como quiero, es decir en una misma fila el valor del relleno y del cambio para un mismo dia, pero me repite una fila



lo ideal seria que el resultado fuera:



he probado con el GROUP BY fecha pero no me resulta, me omite las filas que son correctas

cualquier ayuda sera bienvenida, gracias!
__________________
C[^L*]D
[email protected]
tokkaido.blogspot.com
No hay mejor forma de aprender que enseñar
  #2 (permalink)  
Antiguo 21/08/2012, 17:20
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: fusionar filas pro fecha

Buneo, lo logré un pco rebuscado pero si alguien puede optimizarlo seria mejor

Código MySQL:
Ver original
  1. r.fecha,
  2. IF(r.tipo='RELLENO',r.litros,NULL) AS RELLENO,
  3. IF(c.tipo='CAMBIO',c.litros,NULL) AS CAMBIO
  4. FROM aceites AS c
  5. LEFT JOIN aceites AS r ON r.fecha = c.fecha
  6. ORDER BY fecha, CAMBIO DESC) AS t
  7. WHERE (CAMBIO IS NOT NULL OR RELLENO IS NOT NULL)
  8. GROUP BY fecha
__________________
C[^L*]D
[email protected]
tokkaido.blogspot.com
No hay mejor forma de aprender que enseñar

Etiquetas: fusionar, jquery-mobile
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 01:02.