SoloCodigo
Programación Web y Scripting => PHP => Mensaje iniciado por: reckba2 en Jueves 26 de Junio de 2003, 22:45
-
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
-
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
-
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
-
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
-
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
-
Pués la verdad es que no se cuál puede ser el problema. Probando la misma consulta (la que puse en el primer mensaje) en MySQL lo que obtengo es esto:
nombres | ap_paterno | num_factura | fec_factura | total_facturas
JUAN | PEREZ | 353337 | 2003-10-05 | 48500
Siento no poder ayudarte:ouch:
Salu2,
Avalon
-
Aquí está una dirección donde vienen varias cosas interesantes:
Programación de videojuegos en español
juegos cada mes en c o pascal o qbasic
otro proyecto a largo plazo, código abierto
php, visual basic, programación de juegos rpg
Anime por Adriana Lee (Yu Gi oh)Dragon ball, sakura, yu gi oh, pokemon, caballeros del zodiaco, capitan tsubasa, con imagenes e infomación, roms, etc
entra ene sta dirección
http://groups.msn.com/VideojuegosdeMexi ... antes.msnw (http://groups.msn.com/VideojuegosdeMexico/linksaotraspginasinteresantes.msnw)