我有一个遗留数据库,我需要它来为 Rails 应用程序提取数据。
每个表被拆分为多个带有数字后缀的表。每个表都保存一天中四个小时的数据。
我们有“widget_status”表。该表实际上并不保存数据。
现有的表是:
- 小部件_状态_0
- 小部件_状态_1
- 小部件_状态_2
- 小部件_状态_3
- 小部件_状态_4
- 小部件_状态_53
每个表包含四个小时的数据。
此查询有效:
( SELECT timestamp, some_field FROM widget_status_0
WHERE widget_sn = \@widgetsn and timestamp > $timePeriod )
UNION
( SELECT timestamp, some_field FROM widget_status_1
WHERE widget_sn = \@widgetsn and timestamp > $timePeriod )
UNION
( SELECT timestamp, some_field FROM widget_status_2
WHERE widget_sn = \@widgetsn and timestamp > $timePeriod )
UNION
( SELECT timestamp, some_field FROM widget_status_3
WHERE widget_sn = \@widgetsn and timestamp > $timePeriod )
UNION
( SELECT timestamp, some_field FROM widget_status_4
WHERE widget_sn = \@widgetsn and timestamp > $timePeriod )
UNION
( SELECT timestamp, some_field FROM widget_status_5
WHERE widget_sn = \@widgetsn and timestamp > $timePeriod ) LIMIT 200
我正在尝试创建一个 Rails 模型“小部件”,它将使用 aunion
或类似的东西查询六个基础表,因此其余代码将忽略尝试处理六个表。
我有多个遵循这种模式的表,并且希望能够抽象出 6 个表的处理,因此在其余代码中,我可以正常使用 find 等。谁能建议如何使用 AREL 来做到这一点?或者任何一种既好又简单的方法?