【问题标题】:How to create more complex SQL queries from Controller如何从 Controller 创建更复杂的 SQL 查询
【发布时间】:2017-02-18 08:22:14
【问题描述】:

首先,让我说我不知道​​当前的问题是获得我想要的东西的“正确”方式。这就是问题所在。

我有一个名为 users 的数据库,如下所示:

|__id__|__dateTime__|___ipAddress___|__userName__|
|   1  |   time1    |  192.168.0.1  |  Paul      |
|   2  |   time2    |  192.168.0.22 |  Jessica   |
|   3  |   time1    |  192.168.0.22 |  Jon       |

我知道在Controller中,我可以写类似的东西

User.find(3)

这相当于

SELECT * FROM users WHERE (users.id = 3) LIMIT 1

但是,如果在我的日志中,我想做一些事情,比如查找有多少个唯一的 IP 地址,或者我想要一个查询来返回在time1 期间发生了多少事件。

有没有办法在控制器中做到这一点,或者这不是应该做的事情?

【问题讨论】:

标签: sql ruby-on-rails ruby sqlite


【解决方案1】:

Active Record 提供查询接口,可以是found on the guides here。您可以使用#find_by_query 执行arbitrary queries as well,无需依赖辅助方法。

找出多少个唯一的IP地址

这将通过类似的东西来完成 User.select(:ipAddress).distinct.count

我想要一个返回 time1 期间发生了多少事件的查询

我不确定您所说的事件是什么意思,但如果您想要统计 User 表中与给定时间戳匹配的条目,您可以执行 User.where(:dateTime=>time1).count

(我假设您给出的示例是假的,但您不想命名列 dateTime)

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 2010-10-06
    • 2014-02-07
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多