首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助构造SQL查询以从Postgres db (Rails应用程序)检索记录

需要帮助构造SQL查询以从Postgres db (Rails应用程序)检索记录
EN

Stack Overflow用户
提问于 2015-12-02 19:44:47
回答 1查看 29关注 0票数 0

我在Postgres (0.18.3)中使用Rails (4.1.8)。与这个问题相关的是我的应用程序中的三个相关模型:

代码语言:javascript
复制
Member.rb
has_many :fitness_measurements, :dependent => :destroy
has_many :fitness_goals, :dependent => :destroy 

Fitness_Measurement.rb
belongs_to :member

Fitness_Goal.rb
belongs_to :member

member_id“外键”在健身测量表和健身目标表中。

下面是一个场景:我有一个登录的“成员”。健身测量和健身目标都是以成员为范围的。在一个成员创建一个新的健身目标之前,我想要展示的是会员最近的身体测量。换句话说,我需要检索该成员的上一次记录的健身测量,并在表单上显示该记录的数据(健身目标的form.html.erb)。当我知道健身测量记录的id时,我能够检索想要的值。例如,当我将这段代码放在fitness_goals_controller.rb中时,我会将所需的值放入表单视图中。

代码语言:javascript
复制
before_action :get_fitness_measurement

private

def get_fitness_measurement  
  @fitness_measurement = @member.fitness_measurements.find(2)
end

下面是创建一个新的健身目标(form.html.erb)的相关代码:

代码语言:javascript
复制
<p>
   <li><b>Current Weight:</b>  <%= @fitness_measurement.weight %></li><br> 
</p>

当然,问题是我并不总是知道要检索的健身测量的id。我需要帮助构建一个查询来检索登录成员的上一次适应度度量。这是我需要从健身量表上拿出来的记录。如何构造这样的查询?我阅读了活动记录查询接口( Active Record query )的文档,但仍然不知道如何正确地构造所需的查询。

在Rails控制台中,我运行了以下查询:

代码语言:javascript
复制
@fitness_measurement = FitnessMeasurement.all

检索数据库中的所有适应度度量。注意:包含正确的成员ids。

代码语言:javascript
复制
@fitness_measurement = FitnessMeasurement.select('DISTINCT ON (member_id) *').order('member_id')

检索由成员id排序的所有健身测量值。

代码语言:javascript
复制
@fitness_measurement = FitnessMeasurement.first

检索第一个适应度度量,该度量值恰好属于登录成员。

代码语言:javascript
复制
@fitness_measurement = FitnessMeasurement.last

,它检索上一次记录的适应度测量,它属于匿名成员。

我需要找到最后的健身测量,其中有登录成员的id。如何构造查询以从数据库检索特定记录?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 23:06:13

您可以在创建成员的时候订购成员的健身测量,并选择最后一个。

代码语言:javascript
复制
@fitness_measurement = @member.fitness_measurements.order(:created_at).last

如果他们没有任何测量,你会得到零。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34051623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档