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

Order by sum

Estas en el tema de Order by sum en el foro de Mysql en Foros del Web. De entrada muchas gracias a toda persona que se está tomando el tiempo para poder ayudarme. Quiero poder ordenar una lista en base a la ...
  #1 (permalink)  
Antiguo 22/07/2011, 09:37
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
Información Order by sum

De entrada muchas gracias a toda persona que se está tomando el tiempo para poder ayudarme.

Quiero poder ordenar una lista en base a la suma de una cantidad básicamente sería un ORDER BY SUM(columna) pero simplemente no me va debido a una razón creo en una falla en la estructura en la que cree las tablas, creo que con un inner join se podría solucionar pero simplemente se me ha atorado la cabeza.

Tabla 1:
nick
carrera

Tabla 2.
Creditos
autor

* autor = nick

He intentado:
SELECT tabla1.nick, SUM(tabla2.creditos) as sum FROM tabla1 LEFT JOIN tabla2 ON tabla1.nick=tabla2.autor ORDER BY sum DESC

Necesito obtener "carrera de tabla 1" como dato para mostrarlo pero que se ordene con la suma de creditos de tabla 2.

¿alguna idea?
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #2 (permalink)  
Antiguo 22/07/2011, 10:38
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Order by sum

Saludos

Prueba de la siguiente manera;

Código MySQL:
Ver original
  1. SELECT  t1.carrera
  2. FROM tabla1 t1
  3. SELECT tabla1.nick, sum( tabla2.creditos) as creditos
  4. FROM tabla1
  5. INNER JOIN tabla2 ON tabla1.nick= tabla2.autor
  6. GROUP BY tabla2.autor
  7. )t3 ON t1.nick= t3.nick
  8. ORDER BY t3.creditos DESC
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 22/07/2011, 16:25
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
Respuesta: Order by sum

Muchisimas Gracias Nano algo debe estar mal en mis tablas debido a que lo intenté durante un rato de varias maneras, con o sin alias, haciendo querys más simples con INner join y no más no va, tengo un script por ahi que me fuciona el INNER JOIN sin ningún problema pero maneja la id y no es Varchar como en este caso tal vez eso tengo que ver.

Acabé haciendo lo siguiente, mucho menos elegante y a mi gusto algo muy sucio (sé que suena raro) pero en fin, igual y alguien le sirve.

Código PHP:
$sql1 =mysql_query("SELECT *, sum(creditos) FROM tabla1 GROUP BY autor ORDER BY sum(creditos) DESC");
while (
$row mysql_fetch_array($sql1)) {
$usernick$row['autor'];
$sql2 =mysql_query("SELECT * FROM tabla2 WHERE nick='$usernick'");
while (
$rom mysql_fetch_array($sql2)) {
echo 
'
  <tr>
    <td>['
.$rom['id'].']</td>
    <td>'
.$rom['nick'].'</td>
    <td><u>'
.$rom['nombre'].'</u></td>
    <td>'
.$rom['carrera'].'</td>
        <td><div align="center">'
.$row['sum(creditos)'].'</div></td>
  </tr>
'

De nuevo muchas gracias por la ayuda y espero esto pueda ayudar a alguna persona para algo
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.

Etiquetas: join, order, select, sum, tabla
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 08:45.