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

Buscar registro de ultima fecha de distintos productos

Estas en el tema de Buscar registro de ultima fecha de distintos productos en el foro de Mysql en Foros del Web. tengo la siguiente vista @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT     `factura` . `fecha` AS `fecha` ,     `factura` . `numerofactura` AS ...
  #1 (permalink)  
Antiguo 06/06/2014, 08:02
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 9 años, 9 meses
Puntos: 0
Buscar registro de ultima fecha de distintos productos

tengo la siguiente vista

Código SQL:
Ver original
  1. SELECT
  2.     `factura`.`fecha` AS `fecha`,
  3.     `factura`.`numerofactura` AS `numerofactura`,
  4.     `factura`.`tipofactura` AS `tipofactura`,
  5.     `producto`.`nombreproducto` AS `nombreproducto`,
  6.     `factura`.`cantidadproducto` AS `cantidadproducto`,
  7.     `tarifa`.`precio` AS `precio`,
  8.     `proveedor`.`nombre` AS `nombre`,
  9.     `proveedor`.`idproveedor` AS `idproveedor`
  10.   FROM
  11.     (((`factura` JOIN `producto` ON((`factura`.`idproducto` = `producto`.`idproducto`))) JOIN `tarifa` ON((`factura`.`precio` = `tarifa`.`precio`))) JOIN `proveedor` ON((`proveedor`.`idproveedor` = `factura`.`idproveedor`)))
  12.   ORDER BY
  13.     `factura`.`fecha`,`factura`.`numerofactura`,`proveedor`.`nombre`

de esta vista quiero obtener lo siguiente:
el precio de la ultima fecha de cada producto...
probe con las siguientes consultas pero no tuve suerte...
Código SQL:
Ver original
  1. SELECT `vista_factura`.`nombre` AS nombre_proveedor,
  2.         `vista_factura`.`nombreproducto`,
  3.         `vista_factura`.`precio`,
  4.         `vista_factura`.`fecha`
  5. FROM
  6.         `vista_factura`
  7. WHERE
  8.         `vista_factura`.`idproveedor` = idProveedor AND `vista_factura`.`fecha` = (SELECT MAX(FACTURA.`fecha`)
  9.                                                                                              FROM `factura`);

idProveedor es una variable de entrada que le paso a un procedimiento almacenado...

tambien probe con esta...
Código SQL:
Ver original
  1. SELECT vf_1.* FROM `vista_factura` vf_1 INNER JOIN
  2. (
  3.     SELECT MAX(`vista_factura`.`fecha`) AS max_fecha, `vista_factura`.`nombreproducto`, `vista_factura`.`precio`
  4.     FROM `vista_factura`
  5.     GROUP BY `vista_factura`.`nombreproducto`
  6. ) vf_2
  7. ON vf_1.`nombreproducto` = vf_2.nombreproducto AND vf_1.`fecha` = vf_2.max_fecha

Alguien podra ayudarme?.
Gracias.

Última edición por gnzsoloyo; 06/06/2014 a las 09:01
  #2 (permalink)  
Antiguo 08/06/2014, 09:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Buscar registro de ultima fecha de distintos productos

nachocoletta,
primero ordenas por fecha y, mediante subconsulta con agrupado por producto, sacas el precio.
En resumen y centrándome solo en los datos ahora pertinentes. No lo he probado.

Código MySQL:
Ver original
  1. SELECT t1.nombreproducto, t1.fecha, t1.precio FROM
  2.  (SELECT f.fecha, t.precio, pr.nombreproducto FROM factura f
  3.  INNER JOIN tarifa t ON f.precio = t.precio
  4.  INNER JOIN producto pr ON f.idproducto = pr.idproducto
  5.  ORDER BY f.fecha DESC)t1
  6. GROUP BY t1.idproducto
  #3 (permalink)  
Antiguo 11/06/2014, 07:04
 
Fecha de Ingreso: mayo-2014
Mensajes: 4
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Buscar registro de ultima fecha de distintos productos

Cita:
Iniciado por jurena Ver Mensaje
nachocoletta,
primero ordenas por fecha y, mediante subconsulta con agrupado por producto, sacas el precio.
En resumen y centrándome solo en los datos ahora pertinentes. No lo he probado.

Código MySQL:
Ver original
  1. SELECT t1.nombreproducto, t1.fecha, t1.precio FROM
  2.  (SELECT f.fecha, t.precio, pr.nombreproducto FROM factura f
  3.  INNER JOIN tarifa t ON f.precio = t.precio
  4.  INNER JOIN producto pr ON f.idproducto = pr.idproducto
  5.  ORDER BY f.fecha DESC)t1
  6. GROUP BY t1.idproducto
Unknown column 't1.idproducto' in 'group statement'
ese error da...

lo que quiero obtener es la fecha maxima de cada producto...
por ende si saco la fecha maxima de cada producto obtengo la ultima tarifa
alguna otra idea?

Última edición por nachocoletta; 11/06/2014 a las 07:11 Razón: correccion
  #4 (permalink)  
Antiguo 11/06/2014, 07:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 3 meses
Puntos: 2658
Respuesta: Buscar registro de ultima fecha de distintos productos

Cita:
Unknown column 't1.idproducto' in 'group statement'
ese error da...
Porque si te fijas, la subconsulta no está devolviendo el campo "idproducto". Es un error común.
Agrega ese campo a la subconsulta, entonces podrás invocarlo desde la consulta mayor.

Cita:
alguna otra idea?
Si: No hagas un Copy+Paste de lo que se te aporta. Intenta revisarlo y razonarlo por ti mismo. Nosotros podemos cometer algún error, o dejar cosas para que muestres esfuerzo.
´Lo que vale es lo que tu mismo puedas verificar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/06/2014, 12:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Buscar registro de ultima fecha de distintos productos

Es cierto, se me pasó. Prueba con esto.
Código MySQL:
Ver original
  1. SELECT t1.nombreproducto, t1.idproducto, t1.fecha, t1.precio FROM
  2.  (SELECT f.fecha, t.precio, pr.nombreproducto, f.idproducto FROM factura f
  3.  INNER JOIN tarifa t ON f.precio = t.precio
  4.  INNER JOIN producto pr ON f.idproducto = pr.idproducto
  5.  ORDER BY f.fecha DESC)t1
  6. GROUP BY t1.idproducto

Etiquetas: distintos, fecha, join, productos, registro, select
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:28.