我正在创建一个页面,我想在其中创建一个历史页面。所以我想知道是否有任何方法可以从多个表中获取所有行,然后按它们的时间排序?每个表都有一个名为"created_at“的字段。
那么,有没有办法从所有表中获取数据并进行排序,而不用Rails对它们进行排序呢?
发布于 2009-11-17 22:07:56
你可能会得到一个更好的答案,但我认为你需要
通过History.Id上的外键关系,
History表,其中包含Created date列、自动生成的Id列以及您想要公开的任何其他内容,例如Name,创建所有生成“Created”项的表以使用这个新表“more up”表,即将不同的结果集合并成一个结果集是一个非常困难的问题,但无论如何你都会有效地完成上面的工作--只是在应用层,所以为什么不在数据层正确而高效地完成它呢?
希望这能有所帮助:)
发布于 2009-11-17 22:04:12
取决于这些数据库是否都在同一台计算机上:
在同一台机器上:在sql中使用OrderBy和UNION语句返回结果集
在不同的机器上:您可能想要测试它的性能,但是您可以使用链接服务器和UNION、ORDER BY。或者,您可以让ruby从每个db获取结果,然后将它们组合并排序。
编辑:根据您上次关于不同表而不是DB的注释;使用类似以下内容:
SELECT Created FROM table1
UNION
SELECT Created FROM table2
ORDER BY created发布于 2009-11-17 22:05:29
您需要执行sql,如下所示:
Select * from table order by created_at incr
:将其存储到数组中。对每个数据源执行此操作,然后对Ruby中的所有数组执行合并排序。当然,这对于较小的数据集很有效,但是一旦你得到一个很大的数据集(即:大于内存容量),那么你将不得不使用不同的收集/合并算法。
所以我猜答案是你确实需要执行某种Ruby,除非你求助于另一个答案中描述的Union方法。
https://stackoverflow.com/questions/1749075
复制相似问题