【问题标题】:Retrieving the previous 3 posts with the same product ID检索具有相同产品 ID 的前 3 个帖子
【发布时间】:2014-10-14 07:30:18
【问题描述】:

我正在尝试构建的平台有一个小侧边栏,它应该显示以前具有相同产品 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)

我错过了什么吗?

编辑:示例输出

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

所以,我想获取每个帖子的前 3 个帖子。不仅是前 3 个帖子。

【问题讨论】:

  • 您正在通过 created_at desc 对 where 子句的结果进行排序,并将其限制为 3。因此它将获取最新的 3 条记录。您想显示所有记录然后不要限制它。
  • 我实际上只想显示前 3 个帖子!因此是极限。

标签: sql ruby-on-rails database activerecord


【解决方案1】:

要选择前三个帖子,只需删除 created_at 参数,如下所示:

@prev = Post.where("product_id = ?", params[:product_id]).order('created_at desc').limit(3)

【讨论】:

  • 哦,不。我不希望它获取前 3 个帖子。我希望它获取前 3 个帖子。所以对于 Post A,它应该在 Post A 创建之前获取前 3 个帖子。
  • 如果表格有 Post A、B、C、D 和 E。那么对于 Post A,它应该显示 B、C 和 D。对于 Post B,它应该显示 C、D和 E。
【解决方案2】:

这个怎么样:-

首先找到产品

@product = Post.find_by_id(params[:product_id])

然后根据产品的 created_at 日期查找之后创建的所有产品:-

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

【讨论】:

  • 这将为我获取不同 product_id 的帖子。我也需要以前的帖子具有相同的 product_id。
猜你喜欢
  • 1970-01-01
  • 2022-11-23
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
相关资源
最近更新 更多