繁体   English   中英

将SQL查询转换为Ruby

[英]Translate SQL query to Ruby

仅需要帮助将此SQL查询转换为Ruby。 我在轨道上4.1.5

"SELECT COUNT(*) FROM ab_splits 
    INNER JOIN ab_templates ON ab_splits.AS_templateId = ab_templates.AB_id
    GROUP BY AS_templateId"

第一个模型:

class AbSplits < ActiveRecord::Base

  self.table_name = "ab_splits"
  self.primary_key= :AS_id

end

第二种模式:

class AbTemplates < ActiveRecord::Base

  self.table_name = "ab_templates"
  self.primary_key= :AB_id

end

任何帮助表示赞赏。

首先,您正在使用ActiveRecord进行此操作(请注意模型文件中的< ActiveRecord::Base )。 它是一个将Ruby对象映射到关系数据库的库(因此,对象关系映射库或ORM)。

您需要向您的模型介绍一下数据库的结构:

class AbSplits < ActiveRecord::Base
  self.table_name = "ab_splits"
  self.primary_key = :AS_id
  belongs_to :ab_template, :foreign_key => "AS_templateId"
end

class AbTemplates < ActiveRecord::Base
  self.table_name = "ab_templates"
  self.primary_key = :AB_id
  has_many :ab_splits, :class_name => :AbSplits, :foreign_key => "AS_templateId"
end

这样做时,您可以执行以下ActiveRecord查询:

AbTemplates.joins(:ab_splits).group(:AS_templateId).count

您将获得一个以模板ID为键的哈希,并计为值。

请注意,如果表名,列名和类名遵循The Rails Way(表splits (id, template_id)templates (id) ),则将减轻很多麻烦:

class Split < ActiveRecord::Base
  belongs_to :template
end

class Template < ActiveRecord::Base
  has_many :splits
end

Template.joins(:splits).group(:template_id).count

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM