我有一张桌子上有一些商品的价格 日期,例如:
2014-01-10 $120
2014-01-11 $121
2014-01-13 $119
2014-01-15 $118
我想创建一个可以填补缺失的视图 价格,即。引用现有价格,并返回 如果特定日期的价格未知,可能是最后的已知价格 如果产品从市场上消失,则有合理的限制:
2014-01-10 $120
2014-01-11 $121
2014-01-12 $121
2014-01-13 $119
2014-01-14 $119
2014-01-15 $118
2014-01-16 $118
2014-01-17 $118
2014-01-18 $118
..........
2014-02-01 NULL
如果只是计算价格一次,我 可能会使用一个函数,但我需要稍后组合 带有其他表的数据的数字,日期是常见的 字段。
2014-01-10 $120 data a
2014-01-11 $121 data b
2014-01-12 $121 data c
2014-01-13 $119 data d
2014-01-14 $119 data e
2014-01-15 $118 NULL
2014-01-16 $118 NULL
2014-01-17 $118 data f
2014-01-18 $118 data g
通常,在12日,14日和15日之后,价格字段会 返回NULL,我想避免,因为它会破坏计算 稍后使用这些数据。
如果您认为视图构造不是最好的 解决方案在这里,我很感激指出我正确的方向 - 正如您所看到的,数据库不是我最深的领域 专业知识。 ;)
答案 0 :(得分:0)
如果您有所关注的所有日期的列表,那么您可以使用相关子查询来获取价格:
select d.*,
(select p.price
from prices p
where p.date <= d.date
order by p.date desc
limit 1
) as price
from dates d;
这与MySQL视图兼容 - 子查询位于select
子句中,而不是from
子句中。