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

Sumar de varias tablas

Estas en el tema de Sumar de varias tablas en el foro de Mysql en Foros del Web. Hola, tengo dos tablas (tabla_a, tabla_b) dentro de esas tablas tengo lo siguiente: tabla_a: id - nombre - primero - segundo - tercero - total ...
  #1 (permalink)  
Antiguo 16/12/2010, 15:05
 
Fecha de Ingreso: julio-2009
Mensajes: 40
Antigüedad: 14 años, 8 meses
Puntos: 0
Sumar de varias tablas

Hola, tengo dos tablas (tabla_a, tabla_b) dentro de esas tablas tengo lo siguiente:

tabla_a:
id - nombre - primero - segundo - tercero - total
-------------------------------------------------------------------
1 - Pepito - 15 - 11 - 10 - 36
2 - Juan - 13 - 9 - 10 - 32

tabla_b:
id - nombre - primero - segundo - tercero - total
-------------------------------------------------------------------
1 - Pepito - 15 - 11 - 10 - 36
2 - Manolo - 10 - 9 - 16 - 35
3 - Juan - 13 - 9 - 10 - 32

Pues bien quiero que se sumen los resultados (la columna total) de esas tabla en otra tabla nueva:

tabla_c:
id///nombre///total
1 ///Pepito///// 72
2/// Juan ////// 64
3 ///Manolo /// 35

¿Como puedo hacer esto?

Un saludo y gracias de antemano.

Última edición por crispin93; 16/12/2010 a las 15:05 Razón: Error en el texto
  #2 (permalink)  
Antiguo 16/12/2010, 16:01
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Sumar de varias tablas

Buenas tardes crispin93:

Hay algunas observaciones que tengo que hacer en cuanto al planteamiento de tu problema, por ejemplo en tu tabla_a "Juan" tiene asignado el id 2, mientras que en tu tabla_b el mismo "Juan" tiene asignado el id 3, por lo que puedo suponer que este número es simplemente un consecutivo para tus registros. Ahora bien, lo que quieres puedes hacerlo así:

Código MySQL:
Ver original
  1. @rownum:=@rownum + 1 as id,  
  2. T.nombre,
  3. sum(T.total) as total
  4. from (SELECT @rownum:=0) r,
  5. (
  6. select * from Tabla_a
  7. select * from Tabla_b
  8. ) T
  9. group by T.nombre order by total desc

La parte del @rownum es sólo para numerar los registros de la tabla resultante, el resto es simplemente juntar tus dos tablas mediante un UNION ALL (ya que si pones UNION sólo se mostraría una vez el registro para "pepito" pues es exactamente igual en las dos tablas) y agrupar por nombre.

También me gustaría hacer una observación en cuanto al diseño de tus tablas, si un campo PUEDE SER CALCULADO como es el caso del total, NO SE DEBE INCLUIR COMO UNA CAMPO MÁS DE LA TABLA. En fin, eso es solo un comentario al margen.

Dale un vistazo al código y nos comentas el resultado.

Saludos
Leo.
  #3 (permalink)  
Antiguo 17/12/2010, 10:37
 
Fecha de Ingreso: julio-2009
Mensajes: 40
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Sumar de varias tablas

Muchas gracias por responder leonardo_josue. Gracias por el codigo, me ha servido.

Respecto a la observación que haces sobre que "Juan" tiene el id 2 en la tabla_a y el 3 en la tabla_b, es porque es un campo auto_increment y si el dato lo inserta el usuario mediante un formulario en php, puede que un día "Juan" lo inserte primero y otro sea "Pepito" o "Manolo" el que lo inserta antes y por eso que en uno, uno de ellos tenga el id 2 y en el otro el 3.

Y por último respecto a lo que indicas sobre el diseño de la tabla, tal vez este mal pero es la primera vez que creo algo con mysql y de momento estoy haciendo pruebas.

Un Saludo y gracias de nuevo :)
  #4 (permalink)  
Antiguo 17/12/2010, 10:52
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Sumar de varias tablas

Buenos días crispin93,

En mi post te comentaba iba a suponer justamente que los campos id eran campos autoincrementables y no campos que relacionaran tus tablas

Cita:
por lo que puedo suponer que este número es simplemente un consecutivo para tus registros
Esto era para determinar por qué campos se tenía que agrupar la información.

La observación que hice con respecto al diseño de tu base de datos es para que lo tomes en cuenta en futuros desarrollos, no para denotar que estuvieras mal ni mucho menos. Simplemente fue una observación como lo mencioné al margen del problema que tenías, el hecho de que sea la primera vez que trabajas con mysql no implica que no puedas tener un mejor modelado de bd.

Saludos
Leo.

Etiquetas: 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 16:30.