PDA

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 ;).