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

Restar dos columnas totales de una tabla

Estas en el tema de Restar dos columnas totales de una tabla en el foro de Mysql en Foros del Web. Hola de nuevo. A ver si me podeis ayudar que no doy una. Tengo una tabla con los resultados de los partidos por equipo: idresultado ...
  #1 (permalink)  
Antiguo 12/09/2011, 02:15
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Restar dos columnas totales de una tabla

Hola de nuevo.

A ver si me podeis ayudar que no doy una.

Tengo una tabla con los resultados de los partidos por equipo:
idresultado
refidpartido
refidequipo
localvisitante 0/1
goles
puntos

He conseguido realizar esta consulta de la que obtengo la clasificacion total goles, ganados perdidos y empatados.
Pero ahora me urge calcular la diferencia de goles entre los equipos para que la clasificacion sea correcta.

Código PHP:
<?php
    
    $sql 
"SELECT e.nombre, SUM(IF(puntos = 3,1,0)) ganados,
 sum(IF(puntos = 1,1,0)) empatados,
 SUM(IF(puntos = 0,1,0)) perdidos,
 SUM(puntos) total,
 SUM(goles) gols
 FROM `resultados` rep
 INNER JOIN equipos e ON rep.refidequipo = e.idequipo GROUP BY e.idequipo ORDER BY total DESC, gols DESC"
;

    
?>
voy a ir probando mientras, pero como el proyecto corre mucha prisa, si podeis ayudarme mucho mejor.
Gracias.
  #2 (permalink)  
Antiguo 12/09/2011, 03:45
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Respuesta: Restar dos columnas totales de una tabla

Nadie sabe nada???

No se puede hacer???, lo tengo mal planteado????
Orientadme un poco.
  #3 (permalink)  
Antiguo 12/09/2011, 04:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Restar dos columnas totales de una tabla

Quizas tendrias que repensar ese diseño de tablas... seguro que encuentras ejemplos... pero se puede conseguir....

Código MySQL:
Ver original
  1. SELECT e.nombre,
  2.              Sum(If(r.puntos=3,1,0)) AS ganados,
  3.              Sum(If(r.puntos=1,1,0)) AS empatados,
  4.              Sum(If(r.puntos=0,1,0)) AS perdidos,
  5.              Sum(r.puntos) AS total,
  6.              Sum(r.goles) AS golesfavor,
  7.              Sum(r1.goles) AS golescontra,
  8.              Sum(r.goles-r1.goles) AS DifGoles
  9. FROM (resultados AS r INNER JOIN resultados AS r1
  10.            ON (r.refidpartido = r1.refidpartido) AND (r.refidequipo <> r1.refidequipo))
  11.           INNER JOIN equipos AS e ON r.refidequipo = e.idequipo
  12. GROUP BY e.nombre;

Esto da lo que pides...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 12/09/2011, 04:59
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Respuesta: Restar dos columnas totales de una tabla

Gracias por tu respuesta.

La consulta funciona gracias.

Es decir que deberia tener el campo goles en contra y equipo contrincante? No como ahora que solo tengo los goles.

Última edición por david21; 12/09/2011 a las 05:09
  #5 (permalink)  
Antiguo 12/09/2011, 05:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Restar dos columnas totales de una tabla

No se tendria que pensar la estructura... pero seguro que hay ejemplos por ahí.... primero me salia una query muy complicada pero esta es bastante simple... lo que tienes que solucionar es asegurar que la base es coherente que los dos registros de resultado que tienes para cada partido sean coherentes entre si....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 12/09/2011 a las 05:49
  #6 (permalink)  
Antiguo 12/09/2011, 07:34
 
Fecha de Ingreso: abril-2007
Mensajes: 10
Antigüedad: 17 años
Puntos: 0
Respuesta: Restar dos columnas totales de una tabla

Gracias quimfv. Me has quitado un peso de encima.

Etiquetas: columnas, join, php, restar, select, sql, tabla, totales
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 01:16.