Ver Mensaje Individual
  #10 (permalink)  
Antiguo 21/04/2016, 06:32
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Hacer SUM correctamente

Vamos otra vez, por partes.

Es absolutamente imposible que esta query te devuelva más de un registro, porque no estás usando GROUP BY, único caso en que hay más de un registro:

Código MySQL:
Ver original
  1. SELECT SUM(sueldo) AS sueldo,
  2.      SUM(antiguedad) AS antiguedad,
  3.      SUM(Dif_Ant) AS Dif_Ant,
  4.      SUM(Turnicidad) AS Turnicidad,
  5.      SUM(C_Puesto) AS C_Puesto,
  6.      SUM(C_Niv_Retr) AS C_Niv_Retr,
  7.      SUM(C_Destino) AS C_Destino,
  8.      SUM(C_Prof_1) AS C_Prof_1,
  9.      SUM(C_Prof_2) AS C_Prof_2,
  10.      SUM(C_Prof_3) AS C_Prof_3,
  11.      SUM(C_Prof_4) AS C_Prof_4
  12. FROM nomisferio
  13. WHERE ID_Nomisferio=1
Como estás usando una funcion agrupada sin agrupamiento, y no estás poniendo en el SELECT ningún otro campo de la tabla, sumará todo en cada columna, y devovlerá un único registro con todos los resultados.
Si estás obteniendo más de un registor, entonces no nos estás posteando información válida, ya que e ejemplo que pones no es exactamente el real.

REspecto a la suma, me parece que NO es muy dificil, una vez obtenido la respuesta de la base, hacer algo como..
Código PHP:
Ver original
  1. $resultado = mysql_query("SELECT SUM(sueldo) AS sueldo,
  2.     SUM(antiguedad) AS antiguedad,
  3.     SUM(Dif_Ant) AS Dif_Ant,
  4.     SUM(Turnicidad) AS Turnicidad,
  5.     SUM(C_Puesto) AS C_Puesto,
  6.     SUM(C_Niv_Retr) AS C_Niv_Retr,
  7.     SUM(C_Destino) AS C_Destino,
  8.     SUM(C_Prof_1) AS C_Prof_1,
  9.     SUM(C_Prof_2) AS C_Prof_2,
  10.     SUM(C_Prof_3) AS C_Prof_3,
  11.     SUM(C_Prof_4) AS C_Prof_4
  12. FROM nomisferio") or die("Error al ejecuta la consulta: ".mysql_error());
  13. $row = mysql_fetch_row($resultado);
  14. $total = $row('sueldo') + $row('antiguedad') + $row('Dif_Ant') + $row('Turnicidad')
  15. + $row('C_Puesto') + $row('C_Niv_Retr') + $row('C_Destino') + $row('C_Prof_1')
  16. + $row('C_Prof_2') + $row('C_Prof_3') + $row('C_Prof_4');
  17. echo "Su salario es: ". $total * $dias_trabajados;

TE juro que da la impresión de que ni siquiera te pusieses a analizar lo que realmente HACE cada una de las sentencias, ni lo que realmente DEVUELVE. Sin pretender ofender...

Postea, POR FAVOR, el código REAL que estás usando. Y digo el REAL, porque por lo que te dije más arriba, es evidente para mí que lo que estás posteando NO ES lo que realmente estás usando. COmo ya te dije, siendo que no usas GROUP BY es IMPOSIBLE que la query te devuelva lo que dices que te devuelve...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)