Ver la Versión Completa : ver el valor maximo de una tabla concatenada
anubis
07-09-2014, 07:28:28
Hola de nuevo.
Tengo esta sentencia sql
SELECT a.NOMBREPRODUCTO,b.CANTIDAD,c.precio from productos a ,inventarios b, precios c where a.ID_PRODUCTO=b.ID_PRODUCTO and a.ID_PRODUCTO=c.ID_PRODUCTO
Donde tengo 3 tablas, una de productos, otra de inventarios y finalmente otra de precios, en las dos primeras existe un registro por producto y por inventario, pero la de precios tiene varios precios del orden 1 a n.
En esa consulta me saca tantos registros como precios tengan los productos, por lo que si un producto tiene 3 precios me saca 3 registros y asi sucesivamente,
lo que me interesaba es que en esa misma consulta me sacara solo el ultimo precio registrado, pero no veo forma.
Alguno sabe como se puede hacer, ya busque en san google
Casimiro Notevi
07-09-2014, 10:21:29
me sacara solo el ultimo precio registrado ¿Qué es el último precio registrado?
lbuelvas
07-09-2014, 19:46:40
Puedes resolverlo utilizando un procedimiento almacenado, la tabla de precios debe tener un campo de fecha o un consecutivo para poder ubicar el ultimo registro que contiene el ultimo precio registrado.
RONPABLO
07-09-2014, 20:56:04
Hola de nuevo.
Tengo esta sentencia sql
Código SQL [-] (http://www.clubdelphi.com/foros/#)SELECT a.NOMBREPRODUCTO,b.CANTIDAD,c.precio from productos a ,inventarios b, precios c where a.ID_PRODUCTO=b.ID_PRODUCTO and a.ID_PRODUCTO=c.ID_PRODUCTO
Donde tengo 3 tablas, una de productos, otra de inventarios y finalmente otra de precios, en las dos primeras existe un registro por producto y por inventario, pero la de precios tiene varios precios del orden 1 a n.
En esa consulta me saca tantos registros como precios tengan los productos, por lo que si un producto tiene 3 precios me saca 3 registros y asi sucesivamente,
lo que me interesaba es que en esa misma consulta me sacara solo el ultimo precio registrado, pero no veo forma.
Alguno sabe como se puede hacer, ya busque en san google
Podría ser algo como
SELECT
a.NOMBREPRODUCTO,b.CANTIDAD,c.precio,
(select first 1 pr.precio from precios pr where pr.ID_PRODUCTO=a.ID_PRODUCTO order by fecha desc, id_precio desc) as ultimo_precio
from productos a ,inventarios b, precios c
where a.ID_PRODUCTO=b.ID_PRODUCTO and a.ID_PRODUCTO=c.ID_PRODUCTO
Lo malo es que con el tiempo tal vez esta consulta se vaya poniendo lenta, algo que se podría solucionar mejor con un campo en la tabla productos llamado precio_actual o algo similar el cual cambie siempre que se agregue un registro en la tabla precios
ecfisa
08-09-2014, 04:13:02
Hola.
Yo encararía la consulta de este modo:
SELECT A.NOMBRE, B.CANTIDAD, C.PRECIO
FROM PRODUCTOS A
INNER JOIN INVENTARIOS B ON B.ID_PRODUCTO = A.ID
INNER JOIN PRECIOS C ON C.ID_PRODUCTO = A.ID
WHERE C.ID = (SELECT MAX(C2.ID) FROM PRECIOS C2 WHERE C2.ID_PRODUCTO = A.ID)
Saludos :)
anubis
08-09-2014, 07:25:14
gracias a todos por responder
eficsa, modifique el codigo que pusiste y ya funciona con lo que yo quiero, gracias.
SELECT A.NOMBREPRODUCTO, B.CANTIDAD, C.PRECIO
FROM PRODUCTOS A
INNER JOIN INVENTARIOS B ON B.ID_PRODUCTO = A.ID_PRODUCTO
INNER JOIN PRECIOS C ON C.ID_PRODUCTO = A.ID_PRODUCTO
WHERE C.ID_PRECIO = (SELECT MAX(C2.ID_PRECIO) FROM PRECIOS C2 WHERE C2.ID_PRODUCTO = A.ID_PRODUCTO)
juntando las 3 tablas, de la de precios me saca el registro del ultimo precio dado de alta ;).
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.