Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/05/2011, 11:03
tokkaido
 
Fecha de Ingreso: julio-2009
Mensajes: 90
Antigüedad: 15 años, 3 meses
Puntos: 4
Sonrisa restar campos pareados de una tabla, y sumar sus resultados

Hola, podria alguien ayudarme con lo siguiente por favor:

tengo una tabla con los siguientes valores:

fecha,valor,evento,elemento
2/2/2011, 1000,'entrada',1
6/7/2011,450,'entrada',3
2/3/2011,2000,'salida',1
4/5/2011,200,'entrada',1
8/8/2011,500,'salida',3
7/6/2011,450,'salida',1
3/1/2011,230,entrada,2
4/9/2011,1000,'entrada',3
4/3/2011,800,entrada,4
9/4/2011,530,'salida',2
1/5/2011,850,'salida',4


algunas reglas para entender el contexto:

todo evento salida tiene su entrada con una fecha anterior
no todas las entradas tienen una salida aun
siempre el valor de la salida será mayor que la entrada

lo que necesito aqui es poder generar un consulta que me devuelva los restos sumados entre entradas y salidas, por ejemplo debería regresarme:

total,elemento
1250, 1
300,2
50,3
50,4


es decir en el elemento 1 restó 2000 de la salida menos 1000 de la entrada en el primer par y luego restó 450 de la segunda salida menos 200 de la segunda entrada lo que dio 250 y los dos sumados me dan 1250, se entiende?

agrego el sql de los datos para el que quiera echarme una manito


Código MySQL:
Ver original
  1. SET FOREIGN_KEY_CHECKS=0;
  2. -- ----------------------------
  3. -- Table structure for eventos
  4. -- ----------------------------
  5. DROP TABLE IF EXISTS `eventos`;
  6. CREATE TABLE `eventos` (
  7.   `fecha` date NOT NULL,
  8.   `valor` int(11) NOT NULL,
  9.   `evento` varchar(20) COLLATE utf8_spanish_ci NOT NULL,
  10.   `elemento` int(11) NOT NULL,
  11.   PRIMARY KEY (`id`)
  12. ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
  13.  
  14. -- ----------------------------
  15. -- Records
  16. -- ----------------------------
  17. INSERT INTO `eventos` VALUES ('1', '2011-02-02', '1000', 'entrada', '1');
  18. INSERT INTO `eventos` VALUES ('2', '2011-07-06', '450', 'entrada', '3');
  19. INSERT INTO `eventos` VALUES ('3', '2011-03-02', '2000', 'salida', '1');
  20. INSERT INTO `eventos` VALUES ('4', '2011-05-04', '200', 'entrada', '1');
  21. INSERT INTO `eventos` VALUES ('5', '2001-08-08', '500', 'salida', '3');
  22. INSERT INTO `eventos` VALUES ('6', '2011-06-07', '450', 'salida', '1');
  23. INSERT INTO `eventos` VALUES ('7', '2011-01-03', '230', 'entrada', '2');
  24. INSERT INTO `eventos` VALUES ('8', '2011-09-04', '1000', 'entrada', '3');
  25. INSERT INTO `eventos` VALUES ('9', '2011-03-04', '800', 'entrada', '4');
  26. INSERT INTO `eventos` VALUES ('10', '2011-04-09', '530', 'salida', '2');
  27. INSERT INTO `eventos` VALUES ('11', '2011-05-01', '850', 'salida', '4');

cualquier luz será agradecida
__________________
C[^L*]D
[email protected]
tokkaido.blogspot.com
No hay mejor forma de aprender que enseñar