Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] resta de una consulta en php

Estas en el tema de resta de una consulta en php en el foro de PHP en Foros del Web. tengo un problema con una pag que estoy realizando, necesito restar dos cantidades de mi tabla pero lo que las hace diferente es que una ...
  #1 (permalink)  
Antiguo 01/12/2014, 11:23
 
Fecha de Ingreso: noviembre-2014
Ubicación: ciudad de puebla
Mensajes: 9
Antigüedad: 9 años, 5 meses
Puntos: 0
resta de una consulta en php

tengo un problema con una pag que estoy realizando, necesito restar dos cantidades de mi tabla pero lo que las hace diferente es que una es importacion y la otra exportacion
quiero restar : exportaciones - importaciones y el campo es (SumaDeVal_Dol)
aca dejare mi codigo

<html>
<body>
<br>
<br>
<br>
<center>
<?php
$Conecto = odbc_connect('prueba',"","");



$Consulta1 = "SELECT SUM(SumaDeVal_Dol) AS Total FROM ENERO where TipoOperacion = 'Exportaciones'";
$Resultado1 = odbc_exec($Conecto,$Consulta1);
while ($Datos1 = odbc_fetch_array($Resultado1)){
Echo('Total de Exportaciones:'.$Datos1['Total'].'<Br />');
}


$Consulta2 = "SELECT SUM(SumaDeVal_Dol) AS Total FROM ENERO where TipoOperacion = 'Importaciones'";
$Resultado2 = odbc_exec($Conecto,$Consulta2);
while ($Datos2 = odbc_fetch_array($Resultado2)){
Echo('Total de Importaciones:'.$Datos2['Total'].'<Br />');
}


echo '<br>';
echo '<br>';

$Consulta3 = "SELECT SUM(SumaDeVal_Dol) AS Total FROM ENERO ";
$Resultado3 = odbc_exec($Conecto,$Consulta3);
while ($Datos3 = odbc_fetch_array($Resultado3)){
Echo('Total de Importacion y Exportacion:'.$Datos3['Total'].'<Br />');
}
?>
</center>
</body>
</html>
  #2 (permalink)  
Antiguo 01/12/2014, 14:05
Avatar de replica  
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: resta de una consulta en php

Si el campo SumaDeVal_Dol almacena las cantidades con signo ( + y - ), según sean exportaciones o importaciones, el tercer echo debería de funcionar.

Si estás preguntando por aquí es que no te funciona, así, ¿has probado esto?:
echo "Exportaciones - Importaciones= ".$Datos1['Total'] - $Datos2['Total'];
  #3 (permalink)  
Antiguo 01/12/2014, 16:51
 
Fecha de Ingreso: noviembre-2014
Ubicación: ciudad de puebla
Mensajes: 9
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: resta de una consulta en php

El campo SumaDeVal_Dol contiene las cantidades en positivo por eso es una suma de todas las exportaciones y despues todas las importaciones ya que tengo esas dos cantidades quiero restar una a la otra
me explique??? :)

acabo de probar el que me pusiste y me pone un valor de 0 en el resultado
mi codigo quedo asi:

$Conecto = odbc_connect('prueba',"","");

$Consulta1 = "SELECT SUM(SumaDeVal_Dol) AS Total FROM ENERO where TipoOperacion = 'Exportaciones'";
$Resultado1 = odbc_exec($Conecto,$Consulta1);
while ($Datos1 = odbc_fetch_array($Resultado1)){
Echo('Exportaciones Enero:'.$Datos1['Total'].'<Br />');
}
$Consulta2 = "SELECT SUM(SumaDeVal_Dol) AS Total FROM ENERO where TipoOperacion = 'Importaciones'";
$Resultado2 = odbc_exec($Conecto,$Consulta2);
while ($Datos2 = odbc_fetch_array($Resultado2)){
Echo('Importaciones Enero:'.$Datos2['Total'].'<Br />');
}
echo '<br>';
echo "Exportaciones - Importaciones=" .$Datos1['Total'] - $Datos2['Total'];
  #4 (permalink)  
Antiguo 01/12/2014, 17:37
Avatar de replica  
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: resta de una consulta en php

¿El total de exportaciones y el de importaciones te lo muestra correctamente?
No he usado nunca la extensión odbc_exec y me sorprende mucho la condición que tienes en el while.
Pero si ambos totales están bien, la solución que te doy creo que es correcta.

Por cierto, ¿por qué utilizas un while si el resultado del Select sólo te dará una fila?
  #5 (permalink)  
Antiguo 01/12/2014, 18:22
 
Fecha de Ingreso: noviembre-2014
Ubicación: ciudad de puebla
Mensajes: 9
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: resta de una consulta en php

el white lo utilizo para que cada vez que entuentre un registro que sea importacion me lo sume en la variable $Dato y al final que me muestre la suma y si me suma y muestra las importaciones y las exportaciones y muestra sus resultados.

sobre la extencion odbc_exec, mi base de datos esta en access por eso utilizo esa.

este es el codigo que tengo:

$Consulta1 = "SELECT SUM(SumaDeVal_Dol) AS Total1 FROM ENERO where TipoOperacion = 'Exportaciones'";
$Resultado1 = odbc_exec($Conecto,$Consulta1);
while ($Datos1 = odbc_fetch_array($Resultado1)){
Echo('Exportaciones Enero:'.$Datos1['Total1'].'<Br />');
}
$Consulta2 = "SELECT SUM(SumaDeVal_Dol) AS Total2 FROM ENERO where TipoOperacion = 'Importaciones'";
$Resultado2 = odbc_exec($Conecto,$Consulta2);
while ($Datos2 = odbc_fetch_array($Resultado2)){
Echo('Importaciones Enero:'.$Datos2['Total2'].'<Br />');
}
echo '<br>';
echo ('Exportaciones - Importaciones:'.$Datos1['Total1'] - $Datos2['Total2']);


y me aparece :

Exportaciones Enero : 36472.75
Exportaciones Enero : 13245.43

0

no sale ni el texto de exportaciones - importaciones
  #6 (permalink)  
Antiguo 05/12/2014, 09:58
Avatar de replica  
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: resta de una consulta en php

Cita:
Iniciado por ramirosh311 Ver Mensaje
el white lo utilizo para que cada vez que entuentre un registro que sea importacion me lo sume en la variable $Dato y al final que me muestre la suma y si me suma y muestra las importaciones y las exportaciones y muestra sus resultados.
Eso ya te lo hace el SUM. Esa consulta de selección sólo te tira una fila, por eso no necesitas el while, al menos como lo veo yo y como me imagino la base de datos.

Cita:
Iniciado por ramirosh311 Ver Mensaje
sobre la extencion odbc_exec, mi base de datos esta en access por eso utilizo esa.

este es el codigo que tengo:

$Consulta1 = "SELECT SUM(SumaDeVal_Dol) AS Total1 FROM ENERO where TipoOperacion = 'Exportaciones'";
$Resultado1 = odbc_exec($Conecto,$Consulta1);
while ($Datos1 = odbc_fetch_array($Resultado1)){
Echo('Exportaciones Enero:'.$Datos1['Total1'].'<Br />');
}
$Consulta2 = "SELECT SUM(SumaDeVal_Dol) AS Total2 FROM ENERO where TipoOperacion = 'Importaciones'";
$Resultado2 = odbc_exec($Conecto,$Consulta2);
while ($Datos2 = odbc_fetch_array($Resultado2)){
Echo('Importaciones Enero:'.$Datos2['Total2'].'<Br />');
}
echo '<br>';
echo ('Exportaciones - Importaciones:'.$Datos1['Total1'] - $Datos2['Total2']);


y me aparece :

Exportaciones Enero : 36472.75
Exportaciones Enero : 13245.43

0

no sale ni el texto de exportaciones - importaciones
En cuanto al 0 último, es posible que el echo se esté haciendo un lío con los paréntesis, puntos y apóstrofes. Otra cosa no se me ocurre.

echo "Exportaciones - Importaciones= ", $Datos1['Total'] - $Datos2['Total']; // En el echo se pueden utilizar comas, como cualquier argumento que se le pasa a una función.
  #7 (permalink)  
Antiguo 12/12/2014, 11:39
 
Fecha de Ingreso: noviembre-2014
Ubicación: ciudad de puebla
Mensajes: 9
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: resta de una consulta en php

me salia 0 porq no estaba almacenando los valores que salian de la suma y lo que me funcino fue guardar mis resultados
$Datos1['Total1'] en $valor1=$Datos1['Total1'];
$Datos2['Total2'] en $valor2=$Datos2['Total2'];
y de ahi ya solo sume
$total= $valor1 - $valor2;
echo ("Exportaciones - Importaciones:".$total);
pero gracias por los aportes
  #8 (permalink)  
Antiguo 12/12/2014, 13:04
Avatar de replica  
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: resta de una consulta en php

No tiene sentido que simplemente por almacenar el resultado en variables, se pueda restar o no finalmente. Sigo pensando que es un lío con las comillas en el echo.

Por supuesto, si la solución de utilizar variables funciona, pues adelante.

Etiquetas: html, resta, select, 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 04:36.