Consulta de traer el producto con la fecha vigente

Estoy tratando de traer la descripción del producto con una fecha vigente

Ejemplo si tengo dos productos

Referencia-Precio-Vigencia_inicio-Vigencia_Fin

111111111-13000-01/01/2016-31/12/2016

111111111-12000-01/02/2016-29/02/2016

Para este ejemplo debo traer la segunda sin perder la primera ya que cuando finalize el precio a mostrar debe ser nuevamente el primero

Pero en este momento traigo el producto con la misma referencia y precios diferentes, pero debería mostrar solo 1 de esos 2

Así tengo mi consulta

SELECT p.ID, p.REFERENCIA, p.NAME, p.IMAGE, pr.PRECIO_COMERCIAL, pr.VIGENCIA_INICIO, pr.VIGENCIA_FIN
FROM cProducts AS p INNER JOIN cLineas AS C INNER JOIN cPrecios AS pr
ON p.REFERENCIA = pr.REFERENCIA
AND pr.CONDICION =1
AND pr.CLIENTE_ID =4
AND p.COD_LINEAS = C.COD_LINEAS
AND p.ESTADO =1
AND pr.VIGENCIA_INICIO <= NOW( )
AND pr.VIGENCIA_FIN >= NOW( )

Respuesta

Lo que deberías hacer es agregar una condición para que solo te muestre las filas con vigencia_fin menor de cada producto.

select p.id, p.referencia, p.name, p.image, pr.precio_comercial, pr.vigencia_inicio, pr.vigencia_fin
from cproducts as p inner join clineas as c inner join cprecios as pr
on p.referencia = pr.referencia
and pr.condicion =1
and pr.cliente_id =4
and p.cod_lineas = c.cod_lineas
and p.estado =1
and pr.vigencia_inicio <= now( ) 
and pr.vigencia_fin >= now( )

where pr.vigencia_fin=(select min(vigencia_fin) from  cprecios as pr1 where

                                                    pr.referencia = pr1.referencia)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas