Ver Mensaje Individual
  #11 (permalink)  
Antiguo 22/04/2016, 00:47
ivan7
 
Fecha de Ingreso: abril-2016
Mensajes: 36
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Hacer SUM correctamente

Cita:
Iniciado por gnzsoloyo Ver Mensaje

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



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...
Realmente, este es el código que he estado utilizando, he probado con el WHERE y sin él.

Realizando la consulta en MySQL SIN el WHERE, me suma TODOS los registros de TODAS las filas.
Es decir, me suma todos los importes de los sueldos, todos los importes de la antigüedad...

En cambio, realizando la consulta CON el WHERE, me saca TODOS los registros que contiene mi tabla, es decir, las 24 filas.

Aparte de utilizar esas dos consultas, también he probado con varias consultas, sin obtener resultados positivos. Aquí una de ellas:
Código PHP:
Ver original
  1. if (isset($_POST['enviado'])){
  2.                 if ($_POST['categoria'] == '1')&&($_POST['mes'] == '28'){
  3.             $query = "SELECT SUM(sueldo, antiguedad, Dif_Ant, Turnicidad, C_Puesto, C_Niv_Retr, C_Destino, C_Prof_1, C_Prof_2, C_Prof_3, C_Prof_4) FROM nomisferio WHERE ID_Nomisferio==1";
  4.                 }elseif($_POST['categoria'] == '1')&&($_POST['mes'] == '30'){
  5.             $query = "SELECT SUM(sueldo, antiguedad, Dif_Ant, Turnicidad, C_Puesto, C_Niv_Retr, C_Destino, C_Prof_1, C_Prof_2, C_Prof_3, C_Prof_4) FROM nomisferio WHERE ID_Nomisferio==2";
  6.                 }elseif($_POST['categoria'] == '1')&&($_POST['mes'] == '31'){
  7.             $query = "SELECT SUM(sueldo, antiguedad, Dif_Ant, Turnicidad, C_Puesto, C_Niv_Retr, C_Destino, C_Prof_1, C_Prof_2, C_Prof_3, C_Prof_4) FROM nomisferio WHERE ID_Nomisferio==3";
Lo que pretendo especificar con esta consulta es que si el usuario escoge la categoria 1 y el tipo de mes que sea, la consulta muestre los valores del ID_Nomisferio que corresponda a esa categoría y ese mes. No sé si se entenderá bien.

Con las dos primeras consultas, no obtengo ningún error, pero no me realiza la suma de los importes. Esto es lo que me sale:
Código HTML:
Ver original
  1. Su salario es: 0

No tengo ninguna necesidad de no poner el código real, bastante que estáis intentando ayudarme, como para "engañaros".

Muchas gracias por el interés, de verdad, pero no entiendo bien como tengo que hacerlo, aparte que creo que no tiene que ser muy complicado, pero me he quedado atascado y no consigo avanzar.

Gracias.