Ruby on rails 从多个表中获取数据,并按时间对所有表进行排序
我正在创建一个页面,我想在其中创建一个历史页面。所以我想知道是否有办法从多个表中获取所有行,然后按时间排序?每个表都有一个名为“created_at”的字段Ruby on rails 从多个表中获取数据,并按时间对所有表进行排序,ruby-on-rails,database,sorting,Ruby On Rails,Database,Sorting,我正在创建一个页面,我想在其中创建一个历史页面。所以我想知道是否有办法从多个表中获取所有行,然后按时间排序?每个表都有一个名为“created_at”的字段 那么,有没有办法从所有表中提取数据并进行排序,而不让Rails从我这里对它们进行排序?这取决于这些数据库是否都在同一台机器上: 在同一台计算机上:在sql中使用OrderBy和UNION语句返回结果集 在不同的机器上:您需要测试它的性能,但您可以使用链接服务器和UNION,按顺序。或者,您可以让ruby从每个db中获取结果,然后将它们组合起
那么,有没有办法从所有表中提取数据并进行排序,而不让Rails从我这里对它们进行排序?这取决于这些数据库是否都在同一台机器上: 在同一台计算机上:在sql中使用OrderBy和UNION语句返回结果集 在不同的机器上:您需要测试它的性能,但您可以使用链接服务器和UNION,按顺序。或者,您可以让ruby从每个db中获取结果,然后将它们组合起来进行排序 编辑:根据您上次对不同表格的评论,而不是DB的评论;使用类似以下内容:
SELECT Created FROM table1
UNION
SELECT Created FROM table2
ORDER BY created
您需要执行以下sql语句: 按增量创建的表格顺序选择* :将其存储到数组中。对每个数据源执行此操作,然后对Ruby中的所有数组执行合并排序。当然,这对小数据集很有效,但一旦您得到一个大的数据集(即:大于将装入内存),则必须使用不同的收集/合并算法
所以我想答案是,你确实需要执行某种Ruby,除非你求助于另一个答案中描述的Union方法。你可能会得到一个更好的答案,但我认为你需要这样做
History
表,其中包含Created
日期列、自动生成的Id
列以及任何其他要公开的内容[例如Name
,Description
]history.Id
希望这有帮助:)您是说一个数据库中有多个数据库还是多个表?对不起,我是说“数据表,非数据库”希望不必这样使用它;)但我认为这样做是最简单、最快的。当你可以使用UNION时,你为什么还要花那么多精力去制作新的表格呢?