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

Traer en un select codigo de algun catalogo y ultima fecha de movimiento.

Estas en el tema de Traer en un select codigo de algun catalogo y ultima fecha de movimiento. en el foro de Mysql en Foros del Web. Tengo 2 tablas una de clientes que seria como un catalogo y otra de facturas, donde se guardan los movimientos de cada cliente, necesito poner ...
  #1 (permalink)  
Antiguo 26/05/2011, 12:27
 
Fecha de Ingreso: mayo-2011
Mensajes: 4
Antigüedad: 13 años, 5 meses
Puntos: 0
Traer en un select codigo de algun catalogo y ultima fecha de movimiento.

Tengo 2 tablas una de clientes que seria como un catalogo y otra de facturas, donde se guardan los movimientos de cada cliente, necesito poner en una consulta los clientes que han comprado y cuando fue su ultima compra, he intentado con left join y consigo traerme a los cliente y a todos sus movimientos (facturas) con un resultado como el que sigue

============================
cliente | Nombre | Factura | Fecha |
============================
25 Juan 320 2011/05/20
25 Juan 350 2011/05/24
25 Juan 380 2011/05/30
33 Luis 334 2011/05/22
33 Luis 356 2011/05/24
68 Pedro 368 2011/05/26
68 Pedro 372 2011/05/28

Si pudiera con un select hacer algo asi:
============================
cliente | Nombre | Factura | Fecha |
============================
25 Juan 380 2011/05/30
33 Luis 356 2011/05/24
68 Pedro 372 2011/05/28

solamente la ultima compra de cada cliente y en UN SOLO select.

Alguien que me tire un cable.....
  #2 (permalink)  
Antiguo 26/05/2011, 13:19
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Traer en un select codigo de algun catalogo y ultima fecha de movimiento.

Hola etrasvina:

Creo que lo único que tendrías que hacer es obtener un max(factura) y max(fecha), más o menos así:

Código MySQL:
Ver original
  1. mysql> create table clientes (cliente int, nombre varchar(10));
  2. Query OK, 0 rows affected (0.11 sec)
  3.  
  4. mysql> insert into clientes values (25, 'Juan'), (33, 'Luis'), (68, 'Pedro');
  5. Query OK, 3 rows affected (0.03 sec)
  6. Records: 3  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> select * from clientes;
  9. +---------+--------+
  10. | cliente | nombre |
  11. +---------+--------+
  12. |      25 | Juan   |
  13. |      33 | Luis   |
  14. |      68 | Pedro  |
  15. +---------+--------+
  16. 3 rows in set (0.00 sec)
  17.  
  18. mysql> create table facturas (factura int, cliente int, fecha date);
  19. Query OK, 0 rows affected (0.05 sec)
  20.  
  21. mysql> insert into facturas values (320, 25, '2011-05-20'),
  22.     -> (350, 25, '2011-05-24'),
  23.     -> (380, 25, '2011-05-30'),
  24.     -> (334, 33, '2011-05-22'),
  25.     -> (356, 33, '2011-05-24'),
  26.     -> (368, 68, '2011-05-26'),
  27.     -> (372, 68, '2011-05-28');
  28. Query OK, 7 rows affected (0.01 sec)
  29. Records: 7  Duplicates: 0  Warnings: 0
  30.  
  31. mysql> select * from facturas;
  32. +---------+---------+------------+
  33. | factura | cliente | fecha      |
  34. +---------+---------+------------+
  35. |     320 |      25 | 2011-05-20 |
  36. |     350 |      25 | 2011-05-24 |
  37. |     380 |      25 | 2011-05-30 |
  38. |     334 |      33 | 2011-05-22 |
  39. |     356 |      33 | 2011-05-24 |
  40. |     368 |      68 | 2011-05-26 |
  41. |     372 |      68 | 2011-05-28 |
  42. +---------+---------+------------+
  43. 7 rows in set (0.00 sec)
  44.  
  45. mysql> #sin grupar
  46. mysql> select c.cliente, c.nombre, f.factura, f.fecha from
  47.     -> clientes c inner join facturas f on c.cliente = f.cliente;
  48. +---------+--------+---------+------------+
  49. | cliente | nombre | factura | fecha      |
  50. +---------+--------+---------+------------+
  51. |      25 | Juan   |     320 | 2011-05-20 |
  52. |      25 | Juan   |     350 | 2011-05-24 |
  53. |      25 | Juan   |     380 | 2011-05-30 |
  54. |      33 | Luis   |     334 | 2011-05-22 |
  55. |      33 | Luis   |     356 | 2011-05-24 |
  56. |      68 | Pedro  |     368 | 2011-05-26 |
  57. |      68 | Pedro  |     372 | 2011-05-28 |
  58. +---------+--------+---------+------------+
  59. 7 rows in set (0.00 sec)
  60.  
  61. mysql> #agrupando y obteniendo el MAX(fecha) y MAX(factura)
  62. mysql> select c.cliente, c.nombre,
  63.     -> max(f.factura) factura,
  64.     -> max(f.fecha) fecha from
  65.     -> clientes c inner join facturas f on c.cliente = f.cliente
  66.     -> group by c.cliente, c.nombre;
  67. +---------+--------+---------+------------+
  68. | cliente | nombre | factura | fecha      |
  69. +---------+--------+---------+------------+
  70. |      25 | Juan   |     380 | 2011-05-30 |
  71. |      33 | Luis   |     356 | 2011-05-24 |
  72. |      68 | Pedro  |     372 | 2011-05-28 |
  73. +---------+--------+---------+------------+
  74. 3 rows in set (0.00 sec)

Haz la prueba y nos comentas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 26/05/2011, 19:18
 
Fecha de Ingreso: mayo-2011
Mensajes: 4
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Traer en un select codigo de algun catalogo y ultima fecha de movimiento.

Gracias!! quedo fenomenal....

Etiquetas: catalogo, fecha, movimiento, select, ultimo, tracker
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 15:56.