Mysql 日期之间为且具有第一个属性值的ActiveRecord查询
RubyonRails3.2 步骤 1) 获取每个用户 2) 如果存在具有相同分销商id值的用户,则只接受第一个用户。 3) 在日期之间选择用户 4) 计数 例如:Mysql 日期之间为且具有第一个属性值的ActiveRecord查询,mysql,ruby-on-rails,ruby-on-rails-3,activerecord,Mysql,Ruby On Rails,Ruby On Rails 3,Activerecord,RubyonRails3.2 步骤 1) 获取每个用户 2) 如果存在具有相同分销商id值的用户,则只接受第一个用户。 3) 在日期之间选择用户 4) 计数 例如: h=User.all.select(:reseller_id).first h.where(created_at: '2014-01-01'..'2014-03-31') h.count 注意 我需要检查所有用户是否是第一个使用经销商id的用户。然后检查日期之间的差异。您缺少一些内容。您需要查看由where生成的sql >
h=User.all.select(:reseller_id).first
h.where(created_at: '2014-01-01'..'2014-03-31')
h.count
注意
我需要检查所有用户是否是第一个使用经销商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
然后,运行第二个查询:
users = User.where(created_at: '2014-01-01'..'2014-04-01', reseller_id: reseller_id)
您应该是黄金。要浏览所有用户记录并仅获取具有相同属性值的第一条记录 这将仅为用户在特定字段中的每个唯一值获取一条记录(此处的特定字段为
经销商id
)
这会在两个日期之间获取我想要的记录
t=h.where(created_at: '2014-01-01'..'2014-04-01')
然后数一数
t.count
你是说像这样吗
User.where(创建于:'2014-01-01'..'2014-03-31')。第一个
@anonymousxxx否,这只会给出第一条记录。日期之间将有数百个用户。选择(:经销商id)。其中(创建于:'2014-01-01'..'2014-03-31')。uniq
?@Pavan此返回为零:/@你的工作很好。它返回每个用户的经销商id。我只是分配了它,并做了计算。请贴出答案。如果您可以先将其设置为非uniqBut,那么分销商id值可以是任何值。我想要第一个拥有任何经销商id的用户。where(创建于:'2014-01-01'..'2014-03-31',全名:'evan')。where(“经销商id不为NULL”)。首先,您可以使用活动记录和原始sql将where子句串在一起。。first将只返回第一条记录。我想要所有的记录,除了经销商的第一个用户!只需作为两个查询执行此操作?first_id=User.where(创建于:'2014-01-01'..'2014-03-31')。where(“经销商id不为空”)。pull(:经销商id);用户。where(创建位置:'2014-01-01'..'2014-03-31',经销商id:first\u id)似乎有效,但它给出的结果与用户相同。选择(:经销商id)。where(创建位置:'2014-01-01'..'2014-03-31')。uniq
t=h.where(created_at: '2014-01-01'..'2014-04-01')
t.count