mysql - 在 Rails 4 中使用子查询

标签 mysql ruby-on-rails ruby-on-rails-4

我有以下两个子查询:

    @sub= ShareDetail.where(:dump_date_id=>2,:file_from_id=>1).select('TotalShares AS previous').group('previous')

    @sub1= ShareDetail.where(:dump_date_id=>1,:file_from_id=>1).select('TotalShares AS current').group('current')

在模型中:

  class ShareHolder < ActiveRecord::Base 
  has_many :share_details,:dependent=>:destroy  
  end

我想在

中使用这些子查询
 @shareHolders= ShareHolder.where(:client_id=>session[:shareinvestor_user_id]).......

我不知道如何使用这些子查询。请帮帮我。

最佳答案

你试过了吗scopes

class ShareHolder < ActiveRecord::Base 
  has_many :share_details,:dependent=>:destroy
  scope :sub, -> { where(:dump_date_id=>2,:file_from_id=>1).select('TotalShares AS previous').group('previous') }
  scope :sub1, -> { where(:dump_date_id=>1,:file_from_id=>1).select('TotalShares AS current').group('current') }
end

然后你可以使用这个:

@shareHolders= ShareHolder.where(:client_id=>session[:shareinvestor_user_id]).sub

更新

class ShareHolder < ActiveRecord::Base 
  has_many :share_details,:dependent=>:destroy
end

class ShareDetail < ActiveRecord::Base
  scope :sub, -> { where(:dump_date_id=>2,:file_from_id=>1).select('TotalShares AS previous').group('previous') }
  scope :sub1, -> { where(:dump_date_id=>1,:file_from_id=>1).select('TotalShares AS current').group('current') }
end

还有这个:

@shareDetails= ShareHolder.find_by(client_id: session[:shareinvestor_user_id]).share_details.sub

关于mysql - 在 Rails 4 中使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913715/

相关文章:

java - WhichdDatabase 将被证明是有效的?

php - 显示来自图像 uploader 的图像

mysql - 创建自定义多对多关联 - Ruby on Rails

redirect - 设计重定向首次登录

sql - rails 4 复杂的 SQL 作用域

ruby-on-rails-4 - 如何在 .js.erb 渲染文件中传递参数并获取

php - Cron Job - 如何在特定日期的两次之间执行脚本?

mysql - mysql where子句中的MAX函数

ruby-on-rails - 使用 Capistrano 在 Rails 4 中延迟作业

ruby-on-rails - Ruby 文件 IO - 分配内存失败