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

Devolver suma de otra tabla

Estas en el tema de Devolver suma de otra tabla en el foro de Mysql en Foros del Web. Hola buenas, Quisiera hacer lo siguiente: Tengo una tabla con superficies, de la siguiente manera: id => 1 superficie => 200 id => 2 superficie ...
  #1 (permalink)  
Antiguo 01/04/2011, 02:27
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Devolver suma de otra tabla

Hola buenas,

Quisiera hacer lo siguiente:

Tengo una tabla con superficies, de la siguiente manera:

id => 1
superficie => 200

id => 2
superficie => 300

id => 3
superficie => 350

y luego tengo una tabla de casos de superficies, donde guardo la combinación posible entre estas, de la siguiente manera:

caso_id => 1
superficie1_id => 1
superficie2_id => 2

caso_id => 1
superficie1_id => 2
superficie2_id => 3

caso_id => 2
superficie1_id => 1
superficie2_id => 2

caso_id => 3
superficie1_id => 2
superficie2_id => 3


Y quiero obtener la siguiente lista, sin que me sume dos veces la sup de los módulos repetidos para el mismo caso:

caso => 1
sup => 850 ( 1 + 2 + 3 )

caso => 2
sup => 500 ( 1 + 2 )

caso => 3
sup => 650 ( 2 + 3 )

Un saludo!
  #2 (permalink)  
Antiguo 05/04/2011, 15:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Devolver suma de otra tabla

hola miktrv:

igual y ya encontraste la solución a tu pregunta, pues la publicaste hace días, de cualquier manera te dejo una solución:

Código MySQL:
Ver original
  1. mysql> create table tabla1 (id int, superficie int);
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> insert into tabla1 values (1,200),(2,300),(3,350);
  5. Query OK, 3 rows affected (0.05 sec)
  6. Records: 3  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> select * from tabla1;
  9. +------+------------+
  10. | id   | superficie |
  11. +------+------------+
  12. |    1 |        200 |
  13. |    2 |        300 |
  14. |    3 |        350 |
  15. +------+------------+
  16. 3 rows in set (0.00 sec)
  17.  
  18. mysql> create table tabla2 (caso_id int, superficie1_id int, superficie2_id int)
  19. ;
  20. Query OK, 0 rows affected (0.06 sec)
  21.  
  22. mysql> insert into tabla2 values (1,1,2),(1,2,3),(2,1,2),(3,2,3);
  23. Query OK, 4 rows affected (0.02 sec)
  24. Records: 4  Duplicates: 0  Warnings: 0
  25.  
  26. mysql> select * from tabla2;
  27. +---------+----------------+----------------+
  28. | caso_id | superficie1_id | superficie2_id |
  29. +---------+----------------+----------------+
  30. |       1 |              1 |              2 |
  31. |       1 |              2 |              3 |
  32. |       2 |              1 |              2 |
  33. |       3 |              2 |              3 |
  34. +---------+----------------+----------------+
  35. 4 rows in set (0.00 sec)
  36.  
  37. mysql> select caso_id, sum(sup) sup from
  38.     -> (
  39.     -> select T2.caso_id, T1_1.id, T1_1.superficie sup
  40.     -> from tabla2 T2 inner join tabla1 T1_1 on T2.superficie1_id = T1_1.id
  41.     -> union
  42.     -> select T2.caso_id, T1_2.id, T1_2.superficie sup
  43.     -> from tabla2 T2 inner join tabla1 T1_2 on T2.superficie2_id = T1_2.id
  44.     -> ) T group by T.caso_id;
  45. +---------+------+
  46. | caso_id | sup  |
  47. +---------+------+
  48. |       1 |  850 |
  49. |       2 |  500 |
  50. |       3 |  650 |
  51. +---------+------+
  52. 3 rows in set (0.00 sec)
  53.  
  54. mysql>

Saludos
Leo
  #3 (permalink)  
Antiguo 06/04/2011, 04:39
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Devolver suma de otra tabla

Hola buenas,

Lo había conseguido con una consulta que tarda 20 segundos en devolverme las búsquedas de superficies dentro de un rango...

Muchas gracias por tu ayuda, lo pruebo haber que tal y te comento!

Por cierto, me gustaría entender un poco como funciona la última consulta... lo de sup y el alias T no lo entiendo del todo.

Un saludo!!
  #4 (permalink)  
Antiguo 06/04/2011, 05:54
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Devolver suma de otra tabla

No me sale...

Haber pongo el caso real que se complica un poco más...

Tengo las siguientes tablas:

tabla m: (id:auto, superficie, estado (activo o no) y el id del padre N)

m_id - m_sup - m_estado - m_n_id

1 - 200 - 1 - 1
2 - 300 - 0 - 1
3 - 400 - 1 - 1
4 - 150 - 1 - 1
5 - 201 - 0 - 2

tabla mc (un id auto, un id por caso y las parejas de m )

mc_id, mc_c_id, mc_m1_id, mc_m2_id

1 - 1 - 1 - 2
2 - 1 - 2 - 3
3 - 1 - 3 - 4

Ese seria el caso 1, donde estarían los m 1 2 3 y 4, ese caso devolvería 200 + 400 + 150 ( solo se suman los m que esten con estado 1 )

y despues tendría una tercera tabla n

que tendria n_id

por ejemplo:

1
2
3

Entonces, yo quiero mostrar los id de n, que la sumas de los casos para esa id esten dentro de una rango, por ejemplo de 0 a 100 ( con el BETWEEN )

Un saludo y gracias.

Etiquetas: devolver, suma, tablas
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 10:34.