Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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
Sql 检索具有相同产品ID的前3篇文章_Sql_Ruby On Rails_Database_Activerecord - Fatal编程技术网

Sql 检索具有相同产品ID的前3篇文章

Sql 检索具有相同产品ID的前3篇文章,sql,ruby-on-rails,database,activerecord,Sql,Ruby On Rails,Database,Activerecord,我试图构建的平台有一个小侧边栏,它应该显示具有相同产品ID的以前的文章。这样用户就可以轻松地导航到在相同ID下分类的更多资源 这是我尝试过的where子句,但不幸的是,它只检索具有相同ID的前3篇文章,而不是以前的文章 @prev = Post.where("product_id = ? AND created_at >= ?", params[:product_id], params[:created_at]).order('created_at desc').limit(3) 我是不

我试图构建的平台有一个小侧边栏,它应该显示具有相同产品ID的以前的文章。这样用户就可以轻松地导航到在相同ID下分类的更多资源

这是我尝试过的where子句,但不幸的是,它只检索具有相同ID的前3篇文章,而不是以前的文章

@prev = Post.where("product_id = ? AND created_at >= ?", params[:product_id], params[:created_at]).order('created_at desc').limit(3)
我是不是错过了什么

编辑:示例输出

如果表格包含帖子A、B、C、D和E。那么对于帖子A,它应该显示B、C和D。对于帖子B,它应该显示C、D和E


因此,我想为每个帖子获取前3篇帖子。不仅仅是前3篇文章。

要选择前3篇文章,只需删除created_at参数,如下所示:

@prev = Post.where("product_id = ?", params[:product_id]).order('created_at desc').limit(3)
这个怎么样:-

首先找到产品

@product = Post.find_by_id(params[:product_id])
然后根据产品在日期创建的_,查找在此之后创建的所有产品:-

@prev = Post.where("created_at > ? AND project_id = ?", @product.created_at, @product.id).order('created_at desc').limit(3)

您正在通过在desc处创建_对where子句的结果进行排序,并将其限制为3。因此,它将获得最新的3项记录。你想显示所有的记录,然后不要限制它。我实际上只想显示前3篇文章!这就是极限。哦,不,我不想让它拿到前三名的帖子。我想让它获取前3篇文章。因此,对于帖子A,它应该在创建帖子A之前获取前3篇帖子。比如,如果表中有帖子A、B、C、D和E。那么对于帖子A,它应该显示B、C和D。对于帖子B,它应该显示C、D和E。这将获取不同产品id的帖子。我需要以前的职位是相同的产品_id也。