Ruby on rails 如何在postgresql中编写复杂查询
我有一个问题。假设我有两个表,一个是Ruby on rails 如何在postgresql中编写复杂查询,ruby-on-rails,database,postgresql,ruby-on-rails-4,Ruby On Rails,Database,Postgresql,Ruby On Rails 4,我有一个问题。假设我有两个表,一个是solu items,另一个是solu informations。 现在,sol_items在sol_informations表中有许多相关记录。 我想通过单个查询获得每个“sol_项目”的最新sol_信息相关记录 假设我在solu items表中有3条记录,每条记录在solu informations中有3条相关记录。 现在,我希望与sol\u信息关联的每个sol\u项目的sol\u信息稳定中的最新记录 我在下面试过 select * from solbox
solu items
,另一个是solu informations
。
现在,sol_items
在sol_informations
表中有许多相关记录。
我想通过单个查询获得每个“sol_项目”的最新sol_信息相关记录
假设我在solu items
表中有3条记录,每条记录在solu informations
中有3条相关记录。
现在,我希望与sol\u信息
关联的每个sol\u项目的sol\u信息稳定中的最新记录
我在下面试过
select * from solbox_informations where(sol_item_id in (1,2,3) ) LIMIT 1
但是对于solu items
表的第一个元素,这只返回一条记录。
不能增加限制值
有人能帮我提出正确的问题吗
solu项目
表列
id, name
id, name, amount, sol_item_id
solu信息
表列
id, name
id, name, amount, sol_item_id
您将需要一个子查询
SolInformaiton.where(id: SolInformaiton.group(:sol_item_id).maximum(:id).values)
说明:
ids = SolInformaiton.group(:sol_item_id).maximum(:id).values
将按sol\u item\u id
对SolInformaiton
中的所有记录进行分组,并从id值最大(最新)的每组中选择一条记录。它将返回ActiveSupport::OrderedHash
,其中sole\u item\u id
作为键,id
作为值,因此.values
将返回所需id的数组
SolInformaiton.where(id: ids)
这是一个简单的where查询,它将返回数组中ID为的记录。我想您正在寻找一个连接。请公开表格结构你能解释一下这个问题吗?谢谢你的回答,我已经接受了你的答案。