Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda con una consulta un tanto complicada

Estas en el tema de Ayuda con una consulta un tanto complicada en el foro de Bases de Datos General en Foros del Web. Hola Srs. Programadores!! Aqui estoy en busca de su gran saiduria... :p Tengo esta consulta : Código PHP: $result  =  mysql_query  ( "SELECT * FROM clientes as c, pagos as pa WHERE c.piso='$piso' and pa.idcliente = c.idcliente ORDER BY pa.fecha DESC" ); $numeroRegistros ...
  #1 (permalink)  
Antiguo 06/12/2004, 11:59
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Ayuda con una consulta un tanto complicada

Hola Srs. Programadores!!
Aqui estoy en busca de su gran saiduria... :p
Tengo esta consulta :
Código PHP:
$result mysql_query ("SELECT * FROM clientes as c, pagos as pa WHERE c.piso='$piso' and pa.idcliente = c.idcliente ORDER BY pa.fecha DESC");
$numeroRegistros=mysql_num_rows($result);
while(
$r=mysql_fetch_assoc($result))
{
    { 
    
$idcliente=$r["idcliente"];
    
$nombrecliente=$r["nombrecompleto"];
    
$fechapago=$r["fecha"];
    
$importepago=$r["importepago"];
    }
echo 
"<table width='100%'  border='1' align='center' cellpadding='5' cellspacing='0' bordercolor='#000000'>\n";
  echo 
"<tr>\n";
    echo 
"<td width='9%' bgcolor='#006699'><div align='center'>$idcliente</div></td>\n";
    echo 
"<td width='33%' bgcolor='#006699'><div align='left'>$nombrecliente</div></td>\n";
    echo 
"<td width='12%' bgcolor='#006699'><div align='center'>$fechapago</div></td>\n";
    echo 
"<td width='13%' bgcolor='#006699'><div align='center'>$importepago</div></td>\n";
    echo 
"<td width='7%' bgcolor='#006699'><div align='center'><a href='ver_datos_cliente.php?idcliente=$idcliente' target='_blank'><img src='alta.gif' width='9' height='9' border='0'></a></div></td>\n";
    echo 
"<td width='11%' bgcolor='#006699'><div align='center'><a href='../consulta/mostrar_pedidosm.php?idcliente=$idcliente' target='_blank'><img src='alta.gif' width='9' height='9' border='0'></a></div></td>\n";
    echo 
"<td width='8%' bgcolor='#FF0000'><div align='center'>$totalcuenta</div></td>\n";
    echo 
"<td width='7%' bgcolor='#FF0000'><div align='center'><a href='enviar_total.php?idcliente=$idcliente' target='_blank'><img src='alta.gif' width='9' height='9' border='0'></a></div></td>\n";
  echo 
"</tr>\n";
echo 
"</table>\n"
El resultado de esto es; el id de cada cliente, el nombre, la fecha de todos los pagos que hicieron y su respectivo importe. Todo perfecto, pero lo que yo quiero es que me muestre nada mas que el ultimo pago de cada cliente. Probe poniendole al final un LIMIT pero lo unico que consegui es que me mostrara nada mas que un solo cliente.
Bueno, muchas gracias y hasta luego
  #2 (permalink)  
Antiguo 06/12/2004, 12:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Traslado tu pregunta al foro de "Base de datos" para que te orienten sobre la consulta SQL más adecuada .. El resto de "PHP" que usas para obtener los datos y su presentación ya lo tienes claro. Debes resolver el tema en tu sentencia SQL.

Un saludo,
  #3 (permalink)  
Antiguo 06/12/2004, 20:59
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Por favor!!! AYUDA!!!!
Es urgente!! Alguno tiene idea de como hacer esto?!

Gracias

PD: perdon de nuevo Cluster por postear en cualquier lado, siempre hago lo mismo :p

Última edición por DracoTronick; 06/12/2004 a las 21:00
  #4 (permalink)  
Antiguo 07/12/2004, 06:16
 
Fecha de Ingreso: agosto-2003
Mensajes: 448
Antigüedad: 20 años, 8 meses
Puntos: 1
Probalo con :

SELECT c.id, c.nombres, max(pa.fecha) FROM clientes as c, pagos as pa
WHERE c.piso='$piso' and pa.idcliente = c.idcliente
GROUP BY c.id, c.nombres
  #5 (permalink)  
Antiguo 07/12/2004, 11:13
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Gracias Victork!!
Use la consulta que me planteaste pero tuve que hacerle algunas modificaciones, quedo asi:

SELECT c.idcliente, c.nombrecompleto, pa.importepago, MAX(pa.fecha) as fechapago FROM clientes as c, pagos as pa WHERE c.piso='$piso' and pa.idcliente = c.idcliente GROUP BY c.idcliente ORDER BY pa.fecha

Pero tiene un problemita, no me muestra el importepago que corresponde a la fechapago, por ej: del id 1 me muestra la fechapago 30-11-2004 (que es la ultima que tiene) pero el importepago del primer pago que tiene.
Otra cosita mas que en realidad no es totalmente necesario pero si se puede mejor. En algun lado deberia ponerle esta consulta.

SELECT SUM(d.cantidad * pr.importe) as totalcuenta FROM pedido as p, detalle as d, productos as pr WHERE p.idcliente='$idcliente' AND p.fecha>'$fechapago' AND p.idpedido = d.idpedido AND d.idproducto = pr.idproducto AND p.fecha

Como hago para que me muestre el totalcuenta de cada idcliente que resulte de la busqueda anterior

Muchas gracias!!
  #6 (permalink)  
Antiguo 17/12/2004, 11:00
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
AYUDA POR FAVOR!!!!!!!!!!
ESTOY DESESPERADO!!!!!!!!!!!!!!!!!!!
Probe cambiando el orden de los campos, agruparlos de distintas formas, limitarlos y no se cuantas cosas mas y no hay caso
A alguien se le ocurre como solucionar esto?
O como hacer una subconsulta que despues se pueda aplicar a PHP.

Gracias


PD: no me acuerdo si lo dije en algun momento pero la base de datos es en 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 04:28.