Foros del Web » Programando para Internet » PHP »

Order By Suma

Estas en el tema de Order By Suma en el foro de PHP en Foros del Web. Buenos Tardes amigos de el foro tengo un problemita se que es algo simple pero soy muy principiante en PHP sumas y quiciera su ayuda ...
  #1 (permalink)  
Antiguo 06/08/2007, 13:03
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Order By Suma

Buenos Tardes amigos de el foro tengo un problemita se que es algo simple pero soy muy principiante en PHP sumas y quiciera su ayuda el probelma es el siguiente.

estoy sumando 17 campos en una tabla el cual esta trabajando correcto pero quiero que al hacer echo para mostrar los totales quiero ponerlo de mayor a menor y no se como hacer esa formula alguien me pudiera decir como hacerlo aqui pongo el como lo estoy haciendo.

Código PHP:
<?php    
$PJ1 
$row_tablajeneral['J1'];
$PJ2 $row_tablajeneral['J2'];
$PJ3 $row_tablajeneral['J3'];
$PJ4 $row_tablajeneral['J4'];
$PJ5 $row_tablajeneral['J5'];
$PJ6 $row_tablajeneral['J6'];
$PJ7 $row_tablajeneral['J7'];
$PJ8 $row_tablajeneral['J8'];
$PJ9 $row_tablajeneral['J9'];
$PJ10 $row_tablajeneral['J10'];
$PJ11 $row_tablajeneral['J11'];
$PJ12 $row_tablajeneral['J12'];
$PJ13 $row_tablajeneral['J13'];
$PJ14 $row_tablajeneral['J14'];
$PJ15 $row_tablajeneral['J15'];
$PJ16 $row_tablajeneral['J16'];
$PJ17 $row_tablajeneral['J17'];
$puntos_totales $PJ1 $PJ2 $PJ3 $PJ4 $PJ5 $PJ6 $PJ7 $PJ8 $PJ9 $PJ10 $PJ11 $PJ12  +$PJ13 $PJ14 $PJ15 $PJ16 $PJ17 ;
$puntos_sort $puntos_totales;
?>
Código PHP:
<?php echo $puntos_sort ?>
NOTA estoy usando dreamwevas

Saludos a Todos y chido el nuevo THEME me gusto...
  #2 (permalink)  
Antiguo 06/08/2007, 13:11
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Re: Order By Suma

hola, si lo que estas mostrando, son registros de una tabla MySQL, en la consulta es donde tienes que definir eso:
Código PHP:
SELECT FORM tabla ORDER BY campo ASC //ó DESC 
ojala y te sirva

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #3 (permalink)  
Antiguo 06/08/2007, 13:21
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

la suma son de compos pero la suma total no esta en my tabla no se si desde mysql pueda hacer la suma ya que tengo un campo con el nobre de puntos el cual siempre yo ponia manual mente la suma en ese campo pero es mucho trabajo por eso lo de sumar los campos y mostrar el total en la pagina aunque no los aguarde en mi tabla ya que donde me urgen es en la pagina aqui la pongo para que te des una idea de lo que estoy hablando.

Código:
http://www.comunidadmp3extreme.com/deportes/tablageneral.php

no se si me explique bien.jejeje
  #4 (permalink)  
Antiguo 06/08/2007, 13:37
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Re: Order By Suma

a ver, me imagino que esos numeros, los introduscas mediante un formulario hacia la base de datos, verdad? si es asi, YO en mi caso haria un campo suma_total, o algo asi, y le haria un update para que cuando introdusca los nuevos numeros, se actualize este campo y haria el ORDER BY por este campo espesificamente, de otra manera, creo que puedes recojer ese total en una variable (me imagino que asi lo haces) y el ORDER BY lo haces por esta variable, creo que puede ser algo asi:
Código PHP:
<?php
$suma_total 
== a_la_suma_de_todos_tus_campos

$sql_query 
'SELECT * FORM tabla ORDER BY $suma_total ASC //ó DESC'
?>
creo que asi lo puedes hacer, prueba a ver

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #5 (permalink)  
Antiguo 06/08/2007, 13:39
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Order By Suma

Prueba a que la suma y la ordenación la haga la propia consulta:

SELECT J1+J2+J3+....+J17 as suma_total FROM tablajeneral group by id DESC;

Tienes que agruparlas por el identificador (clave primaria) de la tabla
DESC para ordenar de mayor a menor suma
ASC para ordenar de menor a mayor suma

el resultado será algo así:

suma_total
-----------
6
3
2
1
  #6 (permalink)  
Antiguo 06/08/2007, 14:05
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

Cita:
Iniciado por rogertm Ver Mensaje
a ver, me imagino que esos numeros, los introduscas mediante un formulario hacia la base de datos, verdad? si es asi, YO en mi caso haria un campo suma_total, o algo asi, y le haria un update para que cuando introdusca los nuevos numeros, se actualize este campo y haria el ORDER BY por este campo espesificamente, de otra manera, creo que puedes recojer ese total en una variable (me imagino que asi lo haces) y el ORDER BY lo haces por esta variable, creo que puede ser algo asi:
Código PHP:
<?php
$suma_total 
== a_la_suma_de_todos_tus_campos

$sql_query 
'SELECT * FORM tabla ORDER BY $suma_total ASC //ó DESC'
?>
creo que asi lo puedes hacer, prueba a ver

saludos y suerte
Me Deja en Blanco los puntos totales al hacer eso me imagino que al hacer esta linea.
$suma_total == a_la_suma_de_todos_tus_campos me va a poner el total en el campo de my tabla verdad?




Cita:
Iniciado por bejarano Ver Mensaje
Prueba a que la suma y la ordenación la haga la propia consulta:

SELECT J1+J2+J3+....+J17 as suma_total FROM tablajeneral group by id DESC;

Tienes que agruparlas por el identificador (clave primaria) de la tabla
DESC para ordenar de mayor a menor suma
ASC para ordenar de menor a mayor suma

el resultado será algo así:

suma_total
-----------
6
3
2
1
bejerano esa consulta como seria o que tengo que cambiar en la consulta mia y si le pongo group by id esto solo agrupara este query o usara el ID de mi tabla?

Gracias a los dos por sus respuestas.
  #7 (permalink)  
Antiguo 06/08/2007, 14:44
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Re: Order By Suma

hola otra vez, me imagino que de alguna manera sumes los valores de tus campos, eso es lo que tienes que poner como resultado en la linia $suma_total == a_la_suma_de_todos_tus_campos, o lo otro es hacerlo con un nuevo campo en la tabla de la base de datos, donde sumes todo y le haces el update cuando introduscas nuevos registros
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #8 (permalink)  
Antiguo 06/08/2007, 15:00
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

Cita:
Iniciado por rogertm Ver Mensaje
hola otra vez, me imagino que de alguna manera sumes los valores de tus campos, eso es lo que tienes que poner como resultado en la linia $suma_total == a_la_suma_de_todos_tus_campos, o lo otro es hacerlo con un nuevo campo en la tabla de la base de datos, donde sumes todo y le haces el update cuando introduscas nuevos registros
digamos que ago el UPDATE a las sumas desde mysql esto lo tendre que hace cada ves que se mueva la puntuacion de la tablageneral me imagino y es lo que quiero evitar deja miro aver como soluciono ese detalle de caulquier forma mil gracias por tu ayuda.

en caso de que no encuentre solucion cual seria la formula correcta para hace udate a el campo de los puntos totales.?
  #9 (permalink)  
Antiguo 06/08/2007, 15:01
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 3 meses
Puntos: 4
Re: Order By Suma

No entendí bien jeje, pero con este query puedes sumar campos desde mysql:

Suponiendo que tienes:

mitabla:

campo
--------
1
2
3

query:
Select SUM(campo) as SUMA from mitabla


el resultado sería:

SUMA
-------
6
  #10 (permalink)  
Antiguo 06/08/2007, 15:09
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

Cita:
Iniciado por osvier Ver Mensaje
No entendí bien jeje, pero con este query puedes sumar campos desde mysql:

Suponiendo que tienes:

mitabla:

campo
--------
1
2
3

query:
Select SUM(campo) as SUMA from mitabla


el resultado sería:

SUMA
-------
6
las sumas las tengo echas pero quiero que se muestren de mayor a menor (DESC)..
este formulario es para mysql solo para sumar los campos verdad?
  #11 (permalink)  
Antiguo 06/08/2007, 15:17
 
Fecha de Ingreso: enero-2006
Mensajes: 293
Antigüedad: 18 años, 3 meses
Puntos: 4
Re: Order By Suma

Si pero puedes filtrarlas por medio del where, mmm.. como esta tu tabla de la base de datos...?
  #12 (permalink)  
Antiguo 06/08/2007, 15:28
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

Cita:
Iniciado por osvier Ver Mensaje
Si pero puedes filtrarlas por medio del where, mmm.. como esta tu tabla de la base de datos...?
ok esto es mi conexion para mostrar la tablageneral ya que cada semana se meten pronosticos nuevos y cada temporada es nuevo es por eso lo de 'General072' es mi ID de esta temporada.
Código PHP:
mysql_select_db($database_Mp3X$Mp3X);
$query_tablajeneral "SELECT * FROM emm_quinela WHERE `General` = 'General072'";
$tablajeneral mysql_query($query_tablajeneral$Mp3X) or die(mysql_error());
$row_tablajeneral mysql_fetch_assoc($tablajeneral);
$totalRows_tablajeneral mysql_num_rows($tablajeneral); 

Y aqui como muestro los datos de cada jornada por puntos.
Código PHP:
  <?php do { ?>
  <tr bgcolor="#FFFFFF">
    <td><div align="center"><span class="style23"><?php echo $row_tablajeneral['User']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J1']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J2']; ?></span></div></td>
<?php    
$PJ1 
$row_tablajeneral['J1'];
$PJ2 $row_tablajeneral['J2'];
$PJ3 $row_tablajeneral['J3'];
$PJ4 $row_tablajeneral['J4'];
$PJ5 $row_tablajeneral['J5'];
$PJ6 $row_tablajeneral['J6'];
$PJ7 $row_tablajeneral['J7'];
$PJ8 $row_tablajeneral['J8'];
$PJ9 $row_tablajeneral['J9'];
$PJ10 $row_tablajeneral['J10'];
$PJ11 $row_tablajeneral['J11'];
$PJ12 $row_tablajeneral['J12'];
$PJ13 $row_tablajeneral['J13'];
$PJ14 $row_tablajeneral['J14'];
$PJ15 $row_tablajeneral['J15'];
$PJ16 $row_tablajeneral['J16'];
$PJ17 $row_tablajeneral['J17'];
$puntos_totales $PJ1 $PJ2 $PJ3 $PJ4 $PJ5 $PJ6 $PJ7 $PJ8 $PJ9 $PJ10 $PJ11 $PJ12  +$PJ13 $PJ14 $PJ15 $PJ16 $PJ17 ;
?>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J3']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J4']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J5']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J6']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J7']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J8']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J9']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J10']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J11']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J12']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J13']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J14']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J15']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J16']; ?></span></div></td>
    <td><div align="center"><span class="style21"><?php echo $row_tablajeneral['J17']; ?></span></div></td>
    <td><div align="center"><span class="style17"><?php echo $puntos_totales?></span></div></td>
  </tr>
  <?php } while ($row_tablajeneral mysql_fetch_assoc($tablajeneral)); ?>
  #13 (permalink)  
Antiguo 06/08/2007, 15:38
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Order By Suma

Creo que, o yo estoy mal, o nadie ha comprendido el problema. Según tmh4mail tiene una consulta con 17 sumas (si es así es una locura, pero no es el tema, tal vez sea un campo ya con las suma, no es el tema acá), y quiere ordenar los resultados por esto.
El problema es que desde la consulta (la cual nadie ha visto) veo difícil que se pueda, por ende no te queda remedio que usar php.

Mete todo en un array, y luego ordenalo, tenes funciones como sort
o mas complejas como array_multisort.

Para ponerlas en un array, haces algo como:

Código PHP:
$my_array = array();
$sql "select ...":
$r mysql_query($sql);
while(
$rs mysqli_fetch_assoc($r)) $my_array[] = $rs
Y depende las dimensiones que logres deberás aplicar alguna de las funciones para ordenar arrays.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #14 (permalink)  
Antiguo 06/08/2007, 15:49
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

Cita:
Iniciado por nicolaspar Ver Mensaje
Creo que, o yo estoy mal, o nadie ha comprendido el problema. Según tmh4mail tiene una consulta con 17 sumas (si es así es una locura, pero no es el tema, tal vez sea un campo ya con las suma, no es el tema acá), y quiere ordenar los resultados por esto.
El problema es que desde la consulta (la cual nadie ha visto) veo difícil que se pueda, por ende no te queda remedio que usar php.

Mete todo en un array, y luego ordenalo, tenes funciones como sort
o mas complejas como array_multisort.

Para ponerlas en un array, haces algo como:

Código PHP:
$my_array = array();
$sql "select ...":
$r mysql_query($sql);
while(
$rs mysqli_fetch_assoc($r)) $my_array[] = $rs
Y depende las dimensiones que logres deberás aplicar alguna de las funciones para ordenar arrays.
jejejeje crei que iva hacer algo simple ya me doy cuenta que no .... no se de que otro modo podre hacer las cuentas de las 17 Jornadas y ponerlas de mayor a menor en el campo de puntos totales el modo que yo las hize fue lo unico que pude hacer ya que soy novato en esto de PHP&mysql y sus matematicas y ahora con lo que me dices tu creo que me quede perdido
  #15 (permalink)  
Antiguo 06/08/2007, 15:55
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Order By Suma

No bajes los brazos que es lo importante. No voy a corregirte el script de arriba (que no me parece de lo mejor), pero por lo que veo tenes como imaginaba un campo con la suma.
Lo primero que tenes que hacer es meter todo en un array como te digo, y luego hace un print_r($mi_array), y luego postearnos este resultado, para así ver que orden se puede aplicar. ej:

Código PHP:
$totales = array(); 
$sql "SELECT * FROM emm_quinela WHERE `General` = 'General072'"
$r mysql_query($sql); 
while(
$rs mysqli_fetch_assoc($r)) $totales[] = $rs;  
print_r$totales ); #Esta salida nos dirá cual es el array a ordenar, en base a eso te podemos ayudar 
Suerte
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #16 (permalink)  
Antiguo 06/08/2007, 16:16
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

Cita:
Iniciado por nicolaspar Ver Mensaje
No bajes los brazos que es lo importante. No voy a corregirte el script de arriba (que no me parece de lo mejor), pero por lo que veo tenes como imaginaba un campo con la suma.
Lo primero que tenes que hacer es meter todo en un array como te digo, y luego hace un print_r($mi_array), y luego postearnos este resultado, para así ver que orden se puede aplicar. ej:

Código PHP:
$totales = array(); 
$sql "SELECT * FROM emm_quinela WHERE `General` = 'General072'"
$r mysql_query($sql); 
while(
$rs mysqli_fetch_assoc($r)) $totales[] = $rs;  
print_r$totales ); #Esta salida nos dirá cual es el array a ordenar, en base a eso te podemos ayudar 
Suerte
me sale todo los datos de my tabla que se enceuntran con el termino General072
Código:
http://www.comunidadmp3extreme.com/deportes/tablageneral.php
  #17 (permalink)  
Antiguo 06/08/2007, 19:50
Avatar de jeanki  
Fecha de Ingreso: julio-2007
Mensajes: 59
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Order By Suma

y por que no usas la funcion sum
  #18 (permalink)  
Antiguo 06/08/2007, 20:37
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Order By Suma

jeanki, ya tiene la suma en el campo (por lo que comprendo), y en caso de no ser así serían sum direfentes no unificadas en un row.
tmh4mail, veo que no me comprendiste (lo del print_r), fijate de leerme nuevamente a ver si comprendes, sino decime donde te perdes.

Con javascript como te llevas? porque hay funciones (externas, de un framewrok) que se aplican haciendo que los contenidos de la tabla se ordenen y puedas decirle porque columas y demás configuraciones, podría ser una solución.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #19 (permalink)  
Antiguo 07/08/2007, 12:00
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Re: Order By Suma

hola nuevamente, yo sigo pensando lo siguiente, y por fa si me equivoco que me rectifiquen, que no soy exoperto ni na deso, pero la variable $puntos_totales es con la que tenemos que trabajar, perdon, pero es que no habia leido bien tu codigo antes, entonces seria asi (desde mi novato punto de vista, jajajaja):
Código PHP:
$puntos_totales $PJ1 $PJ2 $PJ3 $PJ4 $PJ5 $PJ6 $PJ7 $PJ8 $PJ9 $PJ10 $PJ11 $PJ12  +$PJ13 $PJ14 $PJ15 $PJ16 $PJ17 
eso me imagino que iria ensima de la query:
Código PHP:
<?php
$suma_total 
== $puntos_totales

$sql_query 
'SELECT * FORM tabla ORDER BY $suma_total ASC //ó DESC'
?>
entonces en la tabla donde muestras los datos, en este campo haces un echoa esta variable..........................,

ACLARO: no estoy seguro que se pueda hacer un ORDER BY dependiendo de una variable externa a lo que se tiene en la tabla de tu base de datos (osea que no es una campo, jajajaja), pero prueba, que tal vez se pueda hacer, y como dije antes, si me equivoco, por fa me rectifican................!

PD: aunque pensandolo bien, creo que el update es la mejor opcion, por que me pierdo asi de pronto en la parte en la que hay que llamar (echo) a la variable $suma_total para cada jornada............ mmmmmmmmmmmmm.............

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #20 (permalink)  
Antiguo 13/08/2007, 22:52
 
Fecha de Ingreso: junio-2004
Mensajes: 71
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Order By Suma

bueno estuve alejado unos dias por otro proyecto que me salio lo cual ya esta terminado ahora regreso a este de nuevo :(

ok comencemos de nuevo olvidemos de sortearlo por el momento.

cuando yo meto el resultado final es de la siguiente manera

si gana el Local Pongo una L en el campo J1
si gana el Visitante Pongo una V en el campo J1
si es empate Pongo una E en el campo J1

y asi con los 9 partidos de cada juego lo que cambia es J1 por el numbero de el partido J1,J2,J3 etc.

entonces al meter el resultado final hay modo de hacer update a todos los pronosticos al mismo tiempo y poner el resultado a cada uno por separado?

Última edición por tmh4mail; 14/08/2007 a las 09:29
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:08.