Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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
Ruby on rails 如何在postgresql中编写复杂查询_Ruby On Rails_Database_Postgresql_Ruby On Rails 4 - Fatal编程技术网

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为的记录。

我想您正在寻找一个连接。请公开表格结构你能解释一下这个问题吗?谢谢你的回答,我已经接受了你的答案。