Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 日期之间为且具有第一个属性值的ActiveRecord查询_Mysql_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Mysql 日期之间为且具有第一个属性值的ActiveRecord查询

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 >

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

> 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