Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/03/2011, 10:57
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Tablas relacionadas: Mostrar solo el último registro ingresado

Tu problema es que con esta consulta:
Código MySQL:
Ver original
  1. SELECT  * FROM clientes  INNER JOIN pagos ON clientes.id_cliente = pagos.id_cliente
estás pidiendo en realidad que te dev uelva la lista completa de pagos, no el último pago. Para poder leer el último pago de cada cliente no puedes usar "*", sino que tienes que indicar los campos a leer y de ese modo poder usar MAX() para buscar los últimos, junto con GROUP BY.
Podrías, en otro caso, ordenarlos por pagos en forma descendente, pero eso requeriría usar subconsultas, porque el GROUP BY debe ir antes del ORDER BY y eso generaría errores de datos si los usas sin subconsultas. Algo así:
Código MySQL:
Ver original
  1.     (SELECT  *
  2.     FROM clientes C INNER JOIN pagos P ON C.id_cliente = P.id_cliente
  3.     ORDER BY P.fechapago DESC) T1
  4. GROUP BY id_cliente
Pero esta forma te dará también error si no pones los campos por su nombre, pero por "nombre de columna duplicada"

Usa el ejemplo y pone el nombre de los campos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)