Programación Web y Scripting > PHP
Re: ayuda con codigo PHP
reckba2:
buenas Tardes¡
realice un codigo de consulta que funciona y de PHP sobre PostgreSQL, pero necesito que cuando encuentre un usuario mas de una vez sume los valores correspondientes o sea los de la variable :deuda.val_factura y el resultado junto con los datos seleccionados me los arroje dentro de una tabla, espero que me ayuden o me orienten como hacerlo.
El codigo es el siguiente:
<?
//esta variable probiene de un formulario que //recive el valor a buscar
$v1=$cta;
$database = pg_connect ("host=xxxxx port=xxxx dbname=xxxxx user=xxxxx");
if (!$database) {
echo "No me puedo conectarn";
exit;
}
$result = pg_exec ($database, "select cliente.nombres, cliente.ap_paterno, deuda.num_factura, deuda.fec_factura, deuda.val_factura
from cliente, deuda where deuda.cta_cliente=cliente.cta_cliente AND deuda.cta_cliente='$v1'");
/* $result = pg_exec ($database, "select * from deuda");*/
if (!$result) {
echo "No pude ejecutar el execn<BR>";
echo "y la razon es: [";
echo pg_errormessage($database);
echo "]n<BR>";
exit;
/*$xx=$deuda.cta_cliente;
echo "la cuenta es $xx n<BR>";*/
}
$nr = pg_numrows ($result);
echo "Tenemos $nr renglones de resultadon<BR>";
$row = 0;
while ($data = pg_fetch_object ($result, $row)){
echo "$row:t";
echo $data->nombres ." " ;
echo $data->ap_paterno . " ==> ";
echo $data->num_factura . " (";
echo $data->val_factura . " ";
echo $data->fec_factura . ")n<BR>";
$row++;
if ($row==$nr){
break;
}
}
pg_close($database);
$sdate=date("d/m/y");
echo $sdate;
?>
Saludos
Reckba
Avalon:
Hola, prueba a cambiar tu consulta por esta otra:
SELECT cliente.nombres, cliente.ap_paterno, deuda.num_factura, deuda.fec_factura, SUM(deuda.val_factura) AS 'total_facturas' FROM cliente LEFT JOIN deuda ON (deuda.cta_cliente=cliente.cta_cliente) WHERE cliente.cta_cliente='$v1' GROUP BY cliente.cta_cliente
Esto debería sumar el total de las facturas del cliente y guardarlo en la variable "total_facturas". A la hora de mostrarlo solo deberías añadir la línea
echo $data->total_facturas;
Espero que funcione, ya me contarás.
Salu2,
Avalon
reckba2:
probe de la siguiente manera:
select cliente.nombres, cliente.ap_paterno, deuda.num_factura, deuda.fec_factura,
SUM(deuda.val_factura) AS "Total"from cliente LEFT JOIN deuda ON
(deuda.cta_cliente=cliente.cta_cliente)where cliente.cta_cliente='00070' GROUP BY
cliente.cta_cliente;
ah¡ probe directamene en postgresql y me arrojo el siguiente error:
Attribute cliente.nombres must be GROUPed or used in an aggregate function.
Saludos
Reckba
Avalon:
Hola de nuevo. Lo he probado con MySQL y funciona correctamente. No he trabajado con PostgreSQL y pensaba que las consultas funcionarían igual pero por lo visto no es así y parece que hay que agrupar todas las columnas que no utilizan funciones de agregación (según el error que indicas).
Prueba con esta consulta:
SELECT cliente.nombres, cliente.ap_paterno, deuda.num_factura, deuda.fec_factura, SUM(deuda.val_factura) AS 'Total' FROM cliente LEFT JOIN deuda ON (deuda.cta_cliente=cliente.cta_cliente) WHERE cliente.cta_cliente='00070' GROUP BY cliente.cta_cliente, cliente.nombres, cliente.ap_paterno, deuda.num_factura, deuda.fec_factura;
A ver que tal...
Salu2,
Avalon
reckba2:
el cliente 00009 tien los siguientes datos en la tabla deuda:
cta_cliente | num_factura | fec_factura | val_factura | fec_vencimi
-------------+-------------+-------------+-------------+-------------
00009 | 353337 | 2003-04-25 | 18900 | 2003-10-05
00009 | 383335 | 2003-05-25 | 29600 | 2003-10-06
prove exactamente tu consulta y el resultado arrojado es el siguiente:
nombres | ap_paterno | num_factura | fec_factura | total
----------------+-----------------+-------------+-------------+-------
JUAN | PEREZ | 353337 | 2003-04-25 | 18900
JUAN | PEREZ | 383335 | 2003-05-25 | 29600
Y yo quiero que salga asi:
nombres | ap_paterno | num_factura | fec_factura | val_factura | TOTAL
----------+-------------+-------------+-------------+-------------+------
JUAN | AGUIRRE | 353337 | 2003-04-25 | 18900 | 48500
| | 383335 | 2003-05-25 | 29600
Y HE BROBADO DE VARIAS FORMAS PERO NO ME RESULTA.
Saludos
Reckba
Navegación
[#] Página Siguiente
Ir a la versión completa