Sql 检索具有相同产品ID的前3篇文章
我试图构建的平台有一个小侧边栏,它应该显示具有相同产品ID的以前的文章。这样用户就可以轻松地导航到在相同ID下分类的更多资源 这是我尝试过的where子句,但不幸的是,它只检索具有相同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) 我是不
@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也。