首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从多个表中获取数据,并按时间排序

从多个表中获取数据,并按时间排序
EN

Stack Overflow用户
提问于 2009-11-17 21:57:30
回答 3查看 1.2K关注 0票数 1

我正在创建一个页面,我想在其中创建一个历史页面。所以我想知道是否有任何方法可以从多个表中获取所有行,然后按它们的时间排序?每个表都有一个名为"created_at“的字段。

那么,有没有办法从所有表中获取数据并进行排序,而不用Rails对它们进行排序呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-17 22:07:56

你可能会得到一个更好的答案,但我认为你需要

通过History.Id上的外键关系,

  1. 创建一个History表,其中包含Created date列、自动生成的Id列以及您想要公开的任何其他内容,例如Name,创建所有生成“Created”项的表以使用这个新表

“more up”表,即将不同的结果集合并成一个结果集是一个非常困难的问题,但无论如何你都会有效地完成上面的工作--只是在应用层,所以为什么不在数据层正确而高效地完成它呢?

希望这能有所帮助:)

票数 2
EN

Stack Overflow用户

发布于 2009-11-17 22:04:12

取决于这些数据库是否都在同一台计算机上:

在同一台机器上:在sql中使用OrderBy和UNION语句返回结果集

在不同的机器上:您可能想要测试它的性能,但是您可以使用链接服务器和UNION、ORDER BY。或者,您可以让ruby从每个db获取结果,然后将它们组合并排序。

编辑:根据您上次关于不同表而不是DB的注释;使用类似以下内容:

代码语言:javascript
运行
复制
SELECT Created FROM table1
UNION
SELECT Created FROM table2
ORDER BY created
票数 1
EN

Stack Overflow用户

发布于 2009-11-17 22:05:29

您需要执行sql,如下所示:

Select * from table order by created_at incr

:将其存储到数组中。对每个数据源执行此操作,然后对Ruby中的所有数组执行合并排序。当然,这对于较小的数据集很有效,但是一旦你得到一个很大的数据集(即:大于内存容量),那么你将不得不使用不同的收集/合并算法。

所以我猜答案是你确实需要执行某种Ruby,除非你求助于另一个答案中描述的Union方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1749075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档