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

No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Estas en el tema de No logro sumar columnas de MySQL y mostrarlas ordenadas en php en el foro de Mysql en Foros del Web. Vean la cosa es así, ya me tiene loco. Tengo la siguiente tabla con sus respectivos campos: equipos: Necesito generar las siguientes tablas: Con las ...
  #1 (permalink)  
Antiguo 29/03/2012, 22:54
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 7 años, 11 meses
Puntos: 0
Exclamación No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Vean la cosa es así, ya me tiene loco.

Tengo la siguiente tabla con sus respectivos campos:

equipos:


Necesito generar las siguientes tablas:


Con las tablas individuales, es decir por categoría estoy bien, me funcionan todas. Llamo a los valores con la consulta:
Código PHP:
select from equipos WHERE id_div 'A' AND id_cat '99' ORDER BY  puntos DESC 
De modo que me trae todos los equipos pertenecientes a la división A y categoría 99, ordenados según sus puntos de mayor a menor.

El tema es con las tablas Generales y Promocionales:
La General es la suma de las categorías 99,00,01,02 y 03. (Todas las categorías tienen los mismos equipos, pero diferentes puntos, goles, etc)
Mientras que la Promocional es la suma de las categorías 04 y 05.

El objetivo es lograr que, por ejemplo:
En la tabla General, me traiga todos los equipos de las categorías 99,00,01,02 y 03 pero con sus valores sumados y ordenados por Posiciones, es decir de mayor PUNTOS a menor PUNTOS. Se entiende?

La verdad que no puedo lograrlo y sería de gran ayuda para mi y para la comunidad poder aportar una respuesta entre todos a este problema.

Un saludo y espero puedan colaborar, gracias!
  #2 (permalink)  
Antiguo 30/03/2012, 03:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 11 meses
Puntos: 574
Respuesta: No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Código MySQL:
Ver original
  1. select name, .... , SUM(puntos) as TPuntos
  2. from equipos
  3. WHERE id_div = 'A'
  4. id_cat IN ('99','00','01','02','03')
  5. GROUP BY name, ....
  6. ORDER BY SUM(puntos) DESC;

Además de name puedes agregar (...) los campos que tengan el mismo valor en los distintos equipos....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 30/03/2012, 04:30
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 7 años, 11 meses
Puntos: 0
Exclamación Respuesta: No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. select name, .... , SUM(puntos) as TPuntos
  2. from equipos
  3. WHERE id_div = 'A'
  4. id_cat IN ('99','00','01','02','03')
  5. GROUP BY name, ....
  6. ORDER BY SUM(puntos) DESC;

Además de name puedes agregar (...) los campos que tengan el mismo valor en los distintos equipos....
Si no me equivoco con esa consulta obtengo la sumatoria de puntos en la tabla TPuntos, no?

Creo que no me sirve, ya que lo que necesito es volcar todas las sumas de todos los valores que tengan los equipos de esas 5 categorías (ya sean puntos, goles a favor, goles en contra, partidos ganados, perdidos, empatados, etc.) PERO que aparezcan ordenados los resultados por PUNTOS en DESCENDENTE.

Se entiende? Ya lo conseguí hacer con consultas individuales, cargo las tablas desordenadas y después con un script en JS las ordeno, pero quería encontrar alguna otra solución directamente de consultas mysql..

Muchas gracias por responder y sigo en la búsqueda!
  #4 (permalink)  
Antiguo 30/03/2012, 06:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 11 meses
Puntos: 574
Respuesta: No logro sumar columnas de MySQL y mostrarlas ordenadas en php

No TPuntos es el alias que he puesto a la suma de puntos (TotalPuntos)

Código MySQL:
Ver original
  1. SELECT name,direccion,localidad
  2. SUM(puntos) as TPuntos,
  3. SUM(p_g) as Tp_g,
  4. SUM(p_e) as Tp_e,
  5. ....
  6.  FROM equipos
  7. WHERE id_div = 'A'
  8. id_cat IN ('99','00','01','02','03')
  9. ORDER BY SUM(puntos) DESC;

ya la completaras tu... un comentario diciendo de que se trata te habria ahorrado tiempo (p.e. bbdd resultados partidos).

Código MySQL:
Ver original
  1. SELECT id_div,name,direccion,localidad
  2. SUM(puntos) as TPuntos,
  3. SUM(p_g) as Tp_g,
  4. SUM(p_e) as Tp_e,
  5. ....
  6.  FROM equipos
  7. id_cat IN ('99','00','01','02','03')
  8. GROUP BY id_div,name,direccion,localidad
  9. ORDER BY id_div, SUM(puntos) DESC;

Así te dara todas las divisiones...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/03/2012 a las 07:03
  #5 (permalink)  
Antiguo 30/03/2012, 15:31
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 7 años, 11 meses
Puntos: 0
Exclamación Respuesta: No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Cita:
Iniciado por quimfv Ver Mensaje
No TPuntos es el alias que he puesto a la suma de puntos (TotalPuntos)

..........

Así te dara todas las divisiones...
Parece que no funciona, estoy usando este código:

Código MySQL:
Ver original
  1. SELECT id_div,id_cat,name,puntos,p_g,p_e,p_p,g_f,g_c,pj,descuento
  2. SUM(puntos) as TPuntos,
  3. SUM(p_g) as Tp_g,
  4. SUM(p_e) as Tp_e,
  5. SUM(p_p) as Tp_p,
  6. SUM(g_f) as Tg_f,
  7. SUM(g_c) as Tg_c,
  8. SUM(pj) as Tpj,
  9. SUM(descuento) as Tdescuento,
  10. FROM equipos
  11. id_cat IN ('04','05')
  12. GROUP BY id_div,id_cat,name,puntos,p_g,p_e,p_p,g_f,g_c,pj,descuento
  13. ORDER BY SUM(puntos) DESC;

y me da el siguiente error de sintaxis:

Código PHP:
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'SUM(puntos) as TPuntos, SUM(p_g) as Tp_g, SUM(p_e) as Tp_e, SUM(p_p) as Tp_p, SU' at line 2 
  #6 (permalink)  
Antiguo 30/03/2012, 15:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Por lo pronto te falta una coma luego del campo "descuento", en la primera línea, y te sobra una después de "Tdescuento".
Además, el ORDER BY está mal escrito. allí te conviene poner el alias de ese SUM() y no el SUM.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 30/03/2012, 16:11
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 7 años, 11 meses
Puntos: 0
Respuesta: No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Miren, me funcionó a medias con este código (al menos me genera algo):

Código MySQL:
Ver original
  1. SELECT name, SUM(puntos) as TPuntos,
  2. SUM(p_g) as Tp_g, SUM(p_e) as Tp_e, SUM(p_p) as Tp_p, SUM(g_f) as Tg_f, SUM(g_c) as Tg_c, SUM(pj) as Tpj, SUM(descuento) as Tdescuento
  3. FROM equipos
  4. WHERE id_cat IN ('04','05') AND id_div = 'A'
  5. GROUP BY name,puntos,p_g,p_e,p_p,g_f,g_c,pj,descuento
  6. ORDER BY SUM(puntos) DESC;

La tabla que me genera es esta (Se llama promocionales):



Debería ser una suma de las categorías 04 y 05:





El problema es que no me muestra la suma de los puntos, sino que agarra todos los equipos y los muestra por el que tenga más. Cuando yo lo que necesito es que agarre todos los equipos con el nombre 'Boca Juniors' por ejemplo (hay uno por categoría), que sume todos sus puntos y demás valores y luego los muestre acomodados por puntos en descendente


Por las dudas aviso que imprimo con un while todos los resultados de las sumas ( $row[Tpuntos], $row[Tg_f] , etc )
  #8 (permalink)  
Antiguo 31/03/2012, 11:29
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 11 meses
Puntos: 574
Respuesta: No logro sumar columnas de MySQL y mostrarlas ordenadas en php

Código MySQL:
Ver original
  1. SELECT name, SUM(puntos) as TPuntos,
  2. SUM(p_g) as Tp_g, SUM(p_e) as Tp_e, SUM(p_p) as Tp_p, SUM(g_f) as Tg_f, SUM(g_c) as Tg_c, SUM(pj) as Tpj, SUM(descuento) as Tdescuento
  3. FROM equipos
  4. WHERE id_cat IN ('04','05') AND id_div = 'A'
  5. GROUP BY name
  6. ORDER BY SUM(puntos) DESC;

Y asi funciona!!!!

Lee el manual sobre GROUP BY!!!!

Código MySQL:
Ver original
  1. SELECT id_div,name, SUM(puntos) as TPuntos,
  2. SUM(p_g) as Tp_g, SUM(p_e) as Tp_e, SUM(p_p) as Tp_p, SUM(g_f) as Tg_f, SUM(g_c) as Tg_c, SUM(pj) as Tpj, SUM(descuento) as Tdescuento
  3. FROM equipos
  4. WHERE id_cat IN ('04','05')
  5. GROUP BY id_div,name
  6. ORDER BY id_div,TPuntos DESC;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: columnas, ordenadas, php, select, tabla, campos
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 00:13.