Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Sumar el total de dos campos

Estas en el tema de Sumar el total de dos campos en el foro de PHP en Foros del Web. Hola a todos. Tengo la siguiente consulta Donde muestra tres items y como hacer con un ejemplo que muestre el total de dos Items "PO" ...
  #1 (permalink)  
Antiguo 24/11/2015, 21:41
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Sumar el total de dos campos

Hola a todos.

Tengo la siguiente consulta Donde muestra tres items y como hacer
con un ejemplo que muestre el total de dos Items "PO" y "IV"

ID - PO - IV:
Aqui el ejemplo:
Fuente

Despues de ver el ejemplo..., muestra cuantos "PO" existen y tambien los "IV"
es decir las cantidades de cada uno,

Aqui va mi consulta, como puedeo mostrar un tercer Item que sume todo
ejemplo sume "PO" y "IV" me muestre el total de los dos Items

Aqui el codigo en funcionamiento.
Código PHP:
Ver original
  1. <?php
  2.             mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  3.             mysql_select_db($dbdatabase) or die(mysql_error());
  4.             $result = mysql_query("SELECT   drug_id,
  5.             SUM(IF(route='PO',count,NULL)) AS PO,
  6.             SUM(IF(route='IV',count,NULL)) AS IV
  7.             FROM  core_reports_antiinfectives
  8.             GROUP BY drug_id");
  9.             while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  
  10.             {
  11.             ?>
  12.             ['<?php  echo $drug_id = $row["drug_id"]; ?>',  <?php echo $PO = $row["PO"]; ?>]], <?php echo $IV = $row["IV"]; ?>
  13.                
  14.             <?php   }   ?>
  #2 (permalink)  
Antiguo 25/11/2015, 02:54
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Sumar el total de dos campos

Saludo
En ese caso, agregar un campo más a la consulta existente que sea
el resultado de los dos SUM anteriores.

Código SQL:
Ver original
  1. (SUM(IF(route='PO',COUNT,NULL)) + SUM(IF(route='IV',COUNT,NULL))) AS TOTAL
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 25/11/2015, 21:03
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo
En ese caso, agregar un campo más a la consulta existente que sea
el resultado de los dos SUM anteriores.

Código SQL:
Ver original
  1. (SUM(IF(route='PO',COUNT,NULL)) + SUM(IF(route='IV',COUNT,NULL))) AS TOTAL


La Suma del total si resulto muy bien Muchas Gracias muy amable por su ayuda, pero tengo un problema con las cadenas

No se si crear un nuevo post o se podra resolver esto?
  #4 (permalink)  
Antiguo 25/11/2015, 21:04
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Código PHP:
Ver original
  1. <!DOCTYPE HTML>
  2. <html>
  3.     <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5.         <title>Highcharts Example</title>
  6.  
  7.         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
  8.         <style type="text/css">
  9. ${demo.css}
  10.         </style>
  11.         <script type="text/javascript">
  12. $(function () {
  13.     $('#container').highcharts({
  14.         chart: {
  15.             type: 'column'
  16.         },
  17.         title: {
  18.             text: 'Monthly Average Rainfall'
  19.         },
  20.         subtitle: {
  21.             text: 'Source:  '
  22.         },
  23.         xAxis: {
  24.             categories: [
  25.    
  26.             <?php
  27.             mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  28.             mysql_select_db($dbdatabase) or die(mysql_error());
  29.             $result = mysql_query("SELECT   drug_id,
  30.             SUM(IF(route='PO',count,NULL)) AS PO,
  31.             SUM(IF(route='IV',count,NULL)) AS IV,
  32.             (SUM(IF(route='PO',count,NULL)) + SUM(IF(route='IV',count,NULL))) AS Total
  33.             FROM    core_reports_antiinfectives
  34.             GROUP BY drug_id");
  35.             while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  
  36.             {
  37.             ?>
  38.                     '<?php  echo $drug_id = $row["drug_id"]; ?>',
  39.             <?php
  40.             }
  41.             ?>
  42.            
  43.             /************************** El Resultado es  *************************************/
  44.             /** Esto Se Incrementa Al final trae una Coma, No deberia ir esa coma al final **/
  45.             /*
  46.             ASI ESTA AHORA
  47.             categories: [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', ],
  48.            
  49.             DEBE QUEDAR ASI
  50.             categories: [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12' ],
  51.                  
  52.             */
  53.                
  54.             /*********************************************************************************/
  55.            
  56.            
  57.             ],
  58.             crosshair: true
  59.         },
  60.         yAxis: {
  61.             min: 0,
  62.             title: {
  63.                 text: 'Rain (mm)'
  64.             }
  65.         },
  66.         tooltip: {
  67.             headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
  68.             pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
  69.                 '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
  70.             footerFormat: '</table>',
  71.             shared: true,
  72.             useHTML: true
  73.         },
  74.         plotOptions: {
  75.             column: {
  76.                 pointPadding: 0.2,
  77.                 borderWidth: 0
  78.             }
  79.         },
  80.         series: [{
  81.             name: 'PO',
  82.             data: [
  83.            
  84.             <?php
  85.             mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  86.             mysql_select_db($dbdatabase) or die(mysql_error());
  87.             $result = mysql_query("SELECT   drug_id,
  88.             SUM(IF(route='PO',count,NULL)) AS PO,
  89.             SUM(IF(route='IV',count,NULL)) AS IV,
  90.             (SUM(IF(route='PO',count,NULL)) + SUM(IF(route='IV',count,NULL))) AS Total
  91.             FROM    core_reports_antiinfectives
  92.             GROUP BY drug_id");
  93.             while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  
  94.             {
  95.             ?>
  96.                     <?php  echo $PO = $row["PO"]; ?>,
  97.             <?php
  98.             }
  99.             ?>
  100.             ]
  101.         },
  102.  
  103.        
  104.        
  105.          {
  106.             name: 'IV',
  107.             data: [
  108.            
  109.             <?php
  110.             mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  111.             mysql_select_db($dbdatabase) or die(mysql_error());
  112.             $result = mysql_query("SELECT   drug_id,
  113.             SUM(IF(route='PO',count,NULL)) AS PO,
  114.             SUM(IF(route='IV',count,NULL)) AS IV,
  115.             (SUM(IF(route='PO',count,NULL)) + SUM(IF(route='IV',count,NULL))) AS Total
  116.             FROM    core_reports_antiinfectives
  117.             GROUP BY drug_id");
  118.             while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  
  119.             {
  120.             ?>
  121.                     <?php  echo $IV = $row["IV"]; ?>,
  122.             <?php
  123.             }
  124.             ?>
  125.             ]
  126.  
  127.         },
  128.        
  129.  
  130.        
  131.        
  132.         {
  133.             name: 'Total: ',
  134.             data: [
  135.            
  136.             <?php
  137.             mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  138.             mysql_select_db($dbdatabase) or die(mysql_error());
  139.             $result = mysql_query("SELECT   drug_id,
  140.             SUM(IF(route='PO',count,NULL)) AS PO,
  141.             SUM(IF(route='IV',count,NULL)) AS IV,
  142.             (SUM(IF(route='PO',count,NULL)) + SUM(IF(route='IV',count,NULL))) AS Total
  143.             FROM    core_reports_antiinfectives
  144.             GROUP BY drug_id");
  145.             while ($row = mysql_fetch_array($result, MYSQL_ASSOC))  
  146.             {
  147.             ?>
  148.                     <?php  echo $Total = $row["Total"]; ?>,
  149.             <?php
  150.             }
  151.             ?>
  152.             ]
  153.         }]
  154.        
  155. /************************** El Resultado es  *************************************/
  156. /*
  157.         series: [{
  158.             name: 'PO',
  159.             ASI ESTA AHORA Y siempre la Coma al final
  160.             data: [  13, 5,  5,     ,   1, ]
  161.            
  162.             DEBE QUEDAR ASI
  163.             data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
  164.  
  165.         }, {
  166.             name: 'IV',
  167.             ASI ESTA AHORA Y siempre la Coma al final
  168.             data: [     ,   ,   1,  2,  8,      ]
  169.  
  170.             DEBE QUEDAR ASI
  171.             data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]
  172.  
  173.         }, {
  174.             name: 'Total: ',
  175.             ASI ESTA AHORA Y siempre la Coma al final
  176.             data: [  ,  ,   6,  ,   9,  ]
  177.                        
  178.             DEBE QUEDAR ASI        
  179.             data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]
  180.         }]
  181.        
  182.         */
  183. /*********************************************************************************/
  184.  
  185.  
  186.        
  187.     });
  188. });
  189.         </script>
  190.     </head>
  191.     <body>
  192. <script src="../../js/highcharts.js"></script>
  193. <script src="../../js/modules/exporting.js"></script>
  194.  
  195. <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
  196.  
  197.     </body>
  198. </html>
  #5 (permalink)  
Antiguo 25/11/2015, 21:09
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Es decir el ID y PO + IV = TOTAL deben ir acorde como se incrementa la tabla y en la cadena sale vacio algo estara mal en la consulta o es la cadena?
  #6 (permalink)  
Antiguo 26/11/2015, 06:26
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Hola Mortiprogramador
El primer codigo no funciona probe con el segundo y esta mejor al menos da resultado a CERO
y se visualiza el resultado de ambos campos,

Con respecto al los Dos campos PO y IV Cambie el codigo por el segundo ejemplo
igual funciona bien los dos campos creados Fuente v2

El detalle es que la suma de los dos campos solo suma algunos campos y no todo
por eso queda vacio algunas resultados


Código PHP:
Ver original
  1. <?php  
  2.         if (isset($_GET['route']))  $route = $_GET['route'];
  3.         if (isset($_GET['drug_id']))    $cid = $_GET['drug_id'];
  4.         $conexion = mysqli_connect($dbhost,$dbuser,$dbpass,$dbdatabase) or die ('error');   // Conexión
  5.         if (!$conexion) {   die("Error de conexión: " . mysqli_connect_error());    }
  6.         $sql = "SELECT drug_id,
  7.        SUM(case route when 'po' then `count` else 0 end) totalPO,
  8.        SUM(case route when 'iv' then `count` else 0 end) totalIV,
  9.         (SUM(IF(case route when 'po' then `count` else 0 end)) + SUM(IF(case route when 'iv' then `count` else 0 end))) AS Total
  10.         FROM core_reports_antiinfectives
  11.         GROUP BY drug_id";
  12.         $result = mysqli_query($conexion, $sql);
  13.         if (mysqli_num_rows($result) > 0) {
  14.         while($row = mysqli_fetch_assoc($result)) {
  15.         ?>
  16.         '<?php echo $Total = $row["Total"]; ?>',
  17.  
  18.         <?  }  } mysqli_close($conexion); ?>

Resultado actual es:

´´,
´2´,
´´,
´6´,
´´,
´9´

Deberia ser asi:

´3´,
´2´,
´8´,
´6´,
´1´,
´9´
  #7 (permalink)  
Antiguo 26/11/2015, 08:06
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Sumar el total de dos campos

Saludo.
Pues en la suma de los sum hay inconvenientes con el if,
mejor sumar los case.
Código SQL:
Ver original
  1. (SUM(CASE route WHEN 'po' THEN `count` ELSE 0 END) + SUM(CASE route WHEN 'iv' THEN `count` ELSE 0 END)) AS Total

Por otra parte, agregando este sum al query de Fuente2
la tabla de resultados sería esta:

Código HTML:
Ver original
  1. drug_id totalPO totalIV Total
  2. 1     2     10     12
  3. 2     6     2     8

¿De donde salen los demás datos?
Tal vez se está probando ya con otros datos.

En cuanto a los campos que quedan con vacío
Código PHP:
Ver original
  1. if(!empty($row['campo'])
  2. //o
  3. if($row['campo'] != '')

Y en cuanto a la coma
Código PHP:
Ver original
  1. $coma=0;
  2. while($row = mysqli_fetch_assoc($result)) {
  3.         ?>
  4.         '<?php echo $Total = $row["Total"]; ?>'
  5.  
  6.         <?  
  7.   if ($coma < mysqli_num_rows($result))
  8.   {
  9.       echo ',';
  10.       $coma++;
  11.   }
  12. }
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #8 (permalink)  
Antiguo 26/11/2015, 11:34
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Hola Mortiprogramador

Ahora si funciona La suma es correcta, aun que la coma no me resulto sigue al final la coma, pero de qu suma ya suma los dos campos, muchas gracias.

Codigo en Funcionamiento.
Código PHP:
Ver original
  1. <?php  
  2.         if (isset($_GET['route']))  $route = $_GET['route'];
  3.         if (isset($_GET['drug_id']))    $cid = $_GET['drug_id'];
  4.         $conexion = mysqli_connect($dbhost,$dbuser,$dbpass,$dbdatabase) or die ('error');   // Conexión
  5.         if (!$conexion) {   die("Error de conexión: " . mysqli_connect_error());    }
  6.         $sql = "SELECT drug_id,
  7.        SUM(case route when 'po' then `count` else 0 end) totalPO,
  8.        SUM(case route when 'iv' then `count` else 0 end) totalIV,
  9.         (SUM(case route when 'po' then `count` else 0 end)) + SUM(case route when 'iv' then `count` else 0 end))) AS Total
  10.         FROM core_reports_antiinfectives
  11.         GROUP BY drug_id";
  12.         $result = mysqli_query($conexion, $sql);
  13.         if (mysqli_num_rows($result) > 0) {
  14.            
  15.         $coma=0;   
  16.         while($row = mysqli_fetch_assoc($result)) {
  17.         ?>
  18.             <?php echo $Total = $row["Total"]; ?>
  19.            
  20.             <?  
  21.             if ($coma < mysqli_num_rows($result))     {
  22.             echo ',';
  23.             $coma++;   
  24.             }
  25.             ?>
  26.  
  27.         <?  }  } mysqli_close($conexion); ?>
  #9 (permalink)  
Antiguo 26/11/2015, 13:00
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Sumar el total de dos campos

Saludo.
Uhm, entonces tal vez así

Código PHP:
Ver original
  1. if ($coma < (mysqli_num_rows($result) - 1))
  2. o
  3. $rows = mysqli_num_rows($result) - 1;
  4. if ($coma < $rows)
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #10 (permalink)  
Antiguo 26/11/2015, 15:17
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Muy amable ahora si se elimino la Ultima Coma en el codigo fuente se ve lejos las comas y los numeros pero eso ya no importa ya que esta funcionando perfectamente bien gracias mortiprogramador.

Tengo una consulta,
segun la fuente del codigo Fuente v2


el drug_id se autoincrementa con mas PO y IV, como esta en el ejemplo.
en el codigo Fuente v2

drug_id--- totalPO--- totalIV
1----------- 2----------- 10
2-----------6----------- 2
etc....

Actualmente con la suma que has generado puede sumar "PO" y "IV" dando el total de ambos,
Que funciona muy bien, el codigo solucionado ya queda no hay mas cambio que hacer ahi.

Quedando actualmente asi:

drug_id--- totalPO--- totalIV----TOTAL
1----------- 2----------- 10---------12
2-----------6----------- 2-----------8
etc....


Pero es posible sumar todos los "PO" dando el resultado de todo el "PO"
y lo mismo con "IV" que solo seria cambia de nombre

Algo asi
drug_id--- totalPO--- totalIV-----
1----------- 2----------- 10----------
2-----------6----------- 2------------

drug_id---totaldelosPO------totaldelosIV
1---------------8--------------------12--------

etc....

espero me haya podido explicar bien
-
  #11 (permalink)  
Antiguo 26/11/2015, 16:53
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Sumar el total de dos campos

Saludo.
Sí, puede hacerse sin usar el GROUP BY en la consulta,
pero sì se deja el drug_id en esta consulta,
solo mostrará el primero (es decir el id 1 para este caso)


__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #12 (permalink)  
Antiguo 26/11/2015, 17:12
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

LO deje asi y suma una cantidad que no esta en PO ni en IV

suma de PO

Código PHP:
Ver original
  1. <?php  
  2.         if (isset($_GET['route']))  $route = $_GET['route'];
  3.         if (isset($_GET['drug_id']))    $cid = $_GET['drug_id'];
  4.         $conexion = mysqli_connect($dbhost,$dbuser,$dbpass,$dbdatabase) or die ('error');   // Conexión
  5.         if (!$conexion) {   die("Error de conexión: " . mysqli_connect_error());    }
  6.         $sql = "SELECT drug_id,
  7.        SUM(case route when 'po' then `count` else 0 end) totalPO,
  8.        SUM(case route when 'iv' then `count` else 0 end) totalIV,
  9.         (SUM(case route when 'po' then `count` else 0 end)) + SUM(case route when 'po' then `count` else 0 end))) AS Total
  10.         FROM core_reports_antiinfectives
  11.         ";
  12.         $result = mysqli_query($conexion, $sql);
  13.         if (mysqli_num_rows($result) > 0) {
  14.            
  15.         $coma=0;   
  16.         while($row = mysqli_fetch_assoc($result)) {
  17.         ?>
  18.             <?php echo $Total = $row["Total"]; ?>
  19.            
  20.             <? if ($coma < (mysqli_num_rows($result) - 1)){echo ','; $coma++; }  ?>
  21.      
  22.         <?  }  } mysqli_close($conexion); ?>
  #13 (permalink)  
Antiguo 26/11/2015, 17:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Esta Sumando un el campo "PO" bien pero el "IV" no, es decir duplico el codigo para mostrar por separado y el resultado es eso, voy a revisar bien con las recomendaciones que me has dado a ver si logro hacer funcionar
  #14 (permalink)  
Antiguo 26/11/2015, 17:34
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Sumar el total de dos campos

Gracias Mortiprogramador

Ya encontre la solucion con lo que me has guiado aqui esta el resultado de la ultima consulta.

Código PHP:
Ver original
  1. <?php  
  2.         if (isset($_GET['route']))  $route = $_GET['route'];
  3.         if (isset($_GET['drug_id']))    $cid = $_GET['drug_id'];
  4.         $conexion = mysqli_connect($dbhost,$dbuser,$dbpass,$dbdatabase) or die ('error');   // Conexión
  5.         if (!$conexion) {   die("Error de conexión: " . mysqli_connect_error());    }
  6.         $sql = "SELECT drug_id,
  7.        SUM(case route when 'po' then `count` else 0 end) totalPO,
  8.        SUM(case route when 'iv' then `count` else 0 end) totalIV,
  9.         SUM(IF(route='po',count,NULL)) AS Total
  10.         FROM core_reports_antiinfectives";
  11.         $result = mysqli_query($conexion, $sql);
  12.         if (mysqli_num_rows($result) > 0) {
  13.            
  14.         $coma=0;   
  15.         while($row = mysqli_fetch_assoc($result)) {
  16.         ?>
  17.             <?php echo $Total = $row["Total"]; ?>
  18.            <? if ($coma < (mysqli_num_rows($result) - 1)){echo ','; $coma++; }  ?>
  19.      
  20.         <?  }  } mysqli_close($conexion); ?>

Etiquetas: mysql
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 20:59.