我正在创建一个我想要创建历史记录页面的页面。所以我想知道是否有任何方法可以从多个表中获取所有行,然后按时间排序?每个表都有一个名为“created_at”的字段。
那么有没有办法从所有表中获取并排序而不让Rails将它们排序为我?
答案 0 :(得分:1)
你可能会得到更好的答案,但我认为你需要
History
表,其中包含Created
日期列,自动生成的Id
列以及您要公开的任何其他内容[例如Name
,{{1 }}] Description
“混搭”表[即将不同的结果集合并到一个结果集]是一个非常困难的问题,但无论如何你都会有效地做到 - 只是在应用程序层,所以为什么不正确地做以及更多在数据层有效。
希望这会有所帮助:)
答案 1 :(得分:0)
取决于这些数据库是否全部在同一台计算机上:
在同一台机器上:在sql中使用OrderBy和UNION语句返回结果集
在不同的计算机上:您需要测试它的性能,但您可以使用Linked Servers和UNION,ORDER BY。或者,您可以让ruby从每个db获取结果,然后将它们组合并排序
编辑:从你上次关于不同表而不是数据库的评论;使用这样的东西:
SELECT Created FROM table1
UNION
SELECT Created FROM table2
ORDER BY created
答案 2 :(得分:0)
你需要执行sql:
通过created_at incr
从表格顺序中选择*:将其存储到数组中。对每个数据源执行此操作,然后对Ruby中的所有阵列执行合并排序。当然,这对小型数据集很有用,但是一旦你得到一个很大的数据集(即:大于适合内存的数据集),那么你将不得不使用不同的收集/合并算法。
所以我猜答案是你确实需要执行某种Ruby,除非你采用另一个答案中描述的Union方法。