Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   ver el valor maximo de una tabla concatenada (https://www.clubdelphi.com/foros/showthread.php?t=86597)

anubis 07-09-2014 07:28:28

ver el valor maximo de una tabla concatenada
 
Hola de nuevo.

Tengo esta sentencia sql

Código 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

Cita:

Empezado por anubis (Mensaje 480816)
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

Cita:

Empezado por anubis (Mensaje 480816)
Hola de nuevo.

Tengo esta sentencia sql

Código 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

Podría ser algo como
Código SQL [-]
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:
Código SQL [-]
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.

Código SQL [-]
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 ;).


La franja horaria es GMT +2. Ahora son las 17:13:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi