FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta SQL que me quita el sueño.
Amigos, les pido una mano con esta consulta, al parecer simple ya que solo interviene 1 tabla, pero me dejo pensando mucho.
El problema es el siguiente. Tengo la tabla --ListaPrecios los campos son: -Precio >> Que es el precio que se le va a asignar a un producto -FIVigencia >> Es la fecha de Inicio de esa vigencia. -Cod_Producto >> Es el código del Producto. -Cod_TipoPrecio >> Es el codigo del Tipo de Lista de Precios. -Cod_Moneda >> Es la moneda en la que esta el precio asignado. Ahora lo que pretendo sacar de ahi es. Una Lista de los Precios en Vigencia de los Productos y Tipos Productos. Al ser en vigencia eso significa que la fecha de registro tiene que ser la última segun producto y Tipo de Precio Por ejem. Prod1 TipoA 01/04/07 50 DOL Prod1 TipoB 03/04/07 40 DOL Prod2 TipoA 04/04/07 80 DOL Prod3 TipoB 08/04/07 300 BOL >> PD: BOL es derivado de Bolivianos. Estuve pensando en hacer un . El problema esta en que no se como meter ahi, el precio de esa fecha máxima y la moneda. Por favor si alguien sabe como hacerlo, les agradeceria mucho su respuesta. Saludos. |
#2
|
|||
|
|||
Espero poder ayudarte o por lo menos darte una idea, prodrías hacer algo así:
SELECT l.Cod_Producto, l.Precio, l.FIVigencia, l.Cod_TipoPrecio, l.Cod_Moneda FROM ListaPrecios l, (Select Cod_Producto, Cod_TipoPrecio, Max(FIVigencia) from ListaPrecios group by Cod_Producto, Cod_TipoPrecio)a WHERE l.Cod_Producto = a.Cod_Producto AND l.Cod_TipoPrecio = a.Cod_TipoPrecio AND l.FIVigencia = a.FIVigencia Solo es un ejemplo la idea principal esta plasmada, tienes que asegurarte que en realidad de funciona. Si alguien tiene una mejor sugerencia adelante. Saludos. |
#3
|
|||
|
|||
se podra hacer algo asi?
No tengo como probarlo, pero se podra hacer algo asi?
o mas sencillo, en vez de tener FIVigencia reemplazalo por FFVigencia (fecha fin vigencia) el precio actual lo pones con FFVigencia en NULL, al cambiar precio, insertas un registro con FFVigencia en NULL y le pones FFVigencia con la fecha actual al registro que cambio Entonces en el select solo haces
al cabiar precio, dentro de una transaccion haces update ListaPrecios set FFVigencia = CURRENTDATE where Cod_Producto=......... and ..... insert into ListaPrecios ... con FFVigencia =NULL Espero que te sirva la idea |
#4
|
|||
|
|||
Buenas sugerencia.
Muchas gracias por sus sugerencias, ambas funcionan son acertadas, pero hay algunos detalles que quisiera subsanar.
Por Ejem, en la siguiente consulta sugerida por hach. Cita:
En caso de tener muchos registros, eso sería un poco costoso en tiempo. Alguien sabe si sería posible mejorar (optimizar) aún mas esa consulta? Saludos. Y nuevamente muchas gracias HACH me sirvio mucho tu colaboración. |
#5
|
|||
|
|||
No estoy tan seguro...
No estoy seguro que sea una consulta por cada registro...
Yo creo que es una consulta extra por cada Cod_Producto, Cod_TipoPrecio, Cod_Moneda distintos... pero no estoy seguro con los indices correctos no tendrias que tener problemas Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cómo despertarse sin sueño | sakuragi | La Taberna | 3 | 02-04-2007 13:29:53 |
Ok, cancelo mi sueño y lo reemplazo por este... | mamcx | Varios | 4 | 09-11-2006 09:18:00 |
El proyecto Google o el sueño de la biblioteca universal | marcoszorrilla | Noticias | 1 | 16-12-2004 23:30:05 |
consulta sobre consulta | superhopi | SQL | 2 | 16-05-2003 19:01:47 |
|