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

Tablas relacionadas: Mostrar solo el último registro ingresado

Estas en el tema de Tablas relacionadas: Mostrar solo el último registro ingresado en el foro de Mysql en Foros del Web. Hola, estoy utilizando PHP y MYSQL y tengo el siguiente problema: 1) Tengo 2 tablas, la principal CLIENTES y la secundaria PAGOS donde hay varios ...
  #1 (permalink)  
Antiguo 21/03/2011, 08:46
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años, 7 meses
Puntos: 1
De acuerdo Tablas relacionadas: Mostrar solo el último registro ingresado

Hola, estoy utilizando PHP y MYSQL y tengo el siguiente problema:

1) Tengo 2 tablas, la principal CLIENTES y la secundaria PAGOS donde hay varios pagos de c/cliente

2) Necesito tan solo mostrar los nombres de los clientes (de la tabla CLIENTES) y tan solo el último pago ingresado (de la tabla PAGOS) para c/u de ellos, pero al realizar la consulta me duplica el nombre del cliente según la cantidad de pagos que tenga.

-----------------------------------------------------------------------------------------------------------------------

Esta es mi consulta:



$result=mysql_query("select * from clientes

INNER JOIN pagos ON clientes.id_cliente = pagos.id_cliente");


while ($row=mysql_fetch_array($result))

{

//TABLA CLIENTES
echo '<table><tr><td align="center"><font size="1">'.$row["nombre_cliente"].'</font></td>';

//TABLA PAGOS
echo '<td align="center"><font size="1">'.$row["dia_vencimiento_pago"].'/'.$row["mes_vencimiento_pago"]. '/'.$row["ano_vencimiento_pago"].'</font></td></tr></table>';

}
mysql_free_result($result)

?>

Aclaración: Las tablas están bien definidas y sus relaciones también ya que en otro formulario puedo ingresar valores en ambas tablas.



Gracias, espero sus respuestas.
Germán
__________________
"Life goes on..."
  #2 (permalink)  
Antiguo 21/03/2011, 10:57
Avatar de 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)
  #3 (permalink)  
Antiguo 21/03/2011, 17:57
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Tablas relacionadas: Mostrar solo el último registro ingresado

Hola, gracias por responder pero no logro hacerlo funcionar aún, no sé que será

Saludos.
__________________
"Life goes on..."
  #4 (permalink)  
Antiguo 21/03/2011, 18:41
Avatar de 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

Difícil de decir, si no posteas el ejemplo de la consulta que estás usando.
No postees PHP ni HTML, eso no nos sirve para saber si la consulta funciona, y no corresponde a este foro (no se debe postear código de programación aquí, sólo SQL).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: inner-join, php, registros, relaciones
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 08:39.