mysql - ActiveRecord 查询日期之间并具有第一个属性值

标签 mysql ruby-on-rails ruby-on-rails-3 activerecord

Ruby on Rails 3.2

步骤

1) 获取每个用户

2) 如果存在具有相同 reseller_id 值的用户,则仅采用第一个用户。

3) 在日期之间获取用户

4) 计数

示例:

h=User.all.select(:reseller_id).first
h.where(created_at: '2014-01-01'..'2014-03-31')
h.count

注意

我需要检查所有用户是否是第一个具有 reseller_id 的用户。然后检查日期之间的情况。

最佳答案

你错过了一些东西。你需要看看那个where生成的sql。

> User.where(created_at: '2014-01-01'..'2014-03-31').to_sql
 => "SELECT `users`.* FROM `users`  WHERE (`users`.`created_at` BETWEEN '2014-01-01' AND '2014-03-31')"

所以,你想要的是

User.where(created_at: '2014-01-01'..'2014-03-31', reseller_id: <somevalue>).first

也许您也想要一份订单?可以添加在 .first

之前

我正在根据下面的评论更新此答案。

首先,您获取所需的 reseller_id:

reseller_id = User.where(created_at: '2014-01-01'..'2014-03-31').where("reseller_id is not null").select(:reseller_id).first

然后,运行第二个查询:

users = User.where(created_at: '2014-01-01'..'2014-04-01', reseller_id: reseller_id)

你应该是金色的。

关于mysql - ActiveRecord 查询日期之间并具有第一个属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702771/

相关文章:

ruby-on-rails - 如何让旧的 Rails 插件在 Rails 4 中工作?

ruby-on-rails-3 - Rails Assets 管道 - image_path 助手仅在开发中工作

php - 存储网站首选项的最佳方式是什么?

ruby-on-rails - 传递与 id 不同的参数以返回 JSON 用户对象的正确 Rails 路由是什么?提供 Controller 方法

php - php在特定时间间隔获得负值的时差

ruby-on-rails - 如何处理自定义 url 中的大写和小写字符?

ruby-on-rails - Rails form_for :remote=>true is not calling js method

ruby-on-rails-3 - Rails 提交按钮 : How do I have button run a certain method when clicked?

mysql - 无法让 LEFT OUTER JOIN 通过相交表工作

php - 能够使用 .php 作为图像扩展名的人