Programación Web y Scripting > PHP

 Re: ayuda con codigo PHP

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa