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

Consultar ultimo precio ingresado de mi tabla stock

Estas en el tema de Consultar ultimo precio ingresado de mi tabla stock en el foro de Bases de Datos General en Foros del Web. Tengo mi tabla stock donde ingreso los precios de compra de cada producto(id_stock es un campo tipo automerico), por ejemplo Código: id_stock=0800 id_producto= 0015 precio=4.50 ...
  #1 (permalink)  
Antiguo 10/03/2015, 14:26
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 9 meses
Puntos: 4
Consultar ultimo precio ingresado de mi tabla stock

Tengo mi tabla stock donde ingreso los precios de compra de cada producto(id_stock es un campo tipo automerico), por ejemplo
Código:
id_stock=0800
id_producto=0015
precio=4.50

id_stock=0820
id_producto=0015
precio=5.00

id_stock=0824
id_producto=0015
precio=5.00

id_stock=0827
id_producto=0018
precio=3.00

id_stock=0901
id_producto=0015
precio=4.00

id_stock=0904
id_producto=0018
precio=3.5
Dado el ejemplo,lo que quiero obtener en mi consulta es el ultimo precio ingresado de todos los productos segun el ejemplo deberian ser los correspondientes a los id_stock 901 y 904.
Dejo mi bd, he probado haciendo subconsulta utilizando la clausula distinct, max pero no he podido solucionarlo http://www.mediafire.com/download/aa...3/080808.accdb
  #2 (permalink)  
Antiguo 10/03/2015, 14:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultar ultimo precio ingresado de mi tabla stock

Código SQL:
Ver original
  1. SELECT t1.id_producto, t2.precio FROM tabla AS t2
  2. LEFT JOIN (SELECT MAX(precio) AS precio,id_producto FROM tabla GROUP BY id_producto) AS t2 ON (t1.id_producto=t2.id_producto)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 10/03/2015, 14:37
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Consultar ultimo precio ingresado de mi tabla stock

Hola toda la informacion esta en una sola tabla.
Lo probe y trate de modificarlo pero nada de nada sigo con el problema

Última edición por hunter18; 10/03/2015 a las 14:55
  #4 (permalink)  
Antiguo 10/03/2015, 16:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultar ultimo precio ingresado de mi tabla stock

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id_stock INT,
  4. id_producto INT,
  5. precio DECIMAL(10,6)
  6. )
  7.  
  8. INSERT INTO #temp VALUES (0800,0015,4.50)
  9.  
  10. INSERT INTO #temp VALUES (0820
  11. ,0015
  12. ,5.00)
  13.  
  14. INSERT INTO #temp VALUES (0824
  15. ,0015
  16. ,5.00)
  17.  
  18. INSERT INTO #temp VALUES (0827
  19. ,0018
  20. ,3.00)
  21.  
  22. INSERT INTO #temp VALUES (0901
  23. ,0015
  24. ,4.00)
  25.  
  26. INSERT INTO #temp VALUES (0904
  27. ,0018
  28. ,3.5)
  29.  
  30.  
  31. SELECT t1.* FROM #temp AS t1
  32. LEFT JOIN (SELECT MAX(id_stock) stock, id_producto FROM #temp GROUP BY id_producto) AS t2 ON (t1.id_producto=t2.id_producto AND t1.id_stock=t2.stock)
  33. WHERE t2.stock IS NOT NULL

Resultado:

id_stock id_producto precio stock id_producto
904 18 3.500000 904 18
901 15 4.000000 901 15
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 10/03/2015, 18:32
 
Fecha de Ingreso: junio-2008
Mensajes: 343
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Consultar ultimo precio ingresado de mi tabla stock

Hola Libras muchas gracias todo esta ok, buscando en tus respuestas, todos tenian razon eres un maestro.

Lo que no me queda muy claro es porque hace un filtrado "WHERE t2.stock IS NOT NULL" no entiendo esa parte?
  #6 (permalink)  
Antiguo 11/03/2015, 08:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultar ultimo precio ingresado de mi tabla stock

"WHERE t2.stock IS NOT NULL" esa parte es necesaria porque se esta haciendo un left join con el subquery y este regresa varios valores con Nulls, ejecuta la consulta hasta esta parte:

Código SQL:
Ver original
  1. SELECT t1.* FROM #temp AS t1
  2. LEFT JOIN (SELECT MAX(id_stock) stock, id_producto FROM #temp GROUP BY id_producto) AS t2 ON (t1.id_producto=t2.id_producto AND t1.id_stock=t2.stock)

Y veras porque es necesario el where ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: bd, consultar, ejemplo, precio, stock, tabla, ultimo
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 18:39.