Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 07-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por anubis Ver Mensaje
me sacara solo el ultimo precio registrado
¿Qué es el último precio registrado?
Responder Con Cita
  #3  
Antiguo 07-09-2014
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
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.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #4  
Antiguo 07-09-2014
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Cita:
Empezado por anubis Ver Mensaje
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
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #5  
Antiguo 08-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 08-09-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
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 .
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Valor maximo de un campo jafera Firebird e Interbase 4 25-10-2013 19:08:39
maximo valor de un subconjunto de datos TrUnkS SQL 1 07-10-2010 18:21:20
valor maximo del autoincrement anubis Tablas planas 2 16-07-2007 07:04:32
consultar el maximo valor beatriz g SQL 4 16-08-2006 17:35:53
consulta con Valor maximo isc_hilda SQL 3 29-04-2004 22:17:20


La franja horaria es GMT +2. Ahora son las 00:57:26.


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
Copyright 1996-2007 Club Delphi