【发布时间】:2018-02-01 13:09:44
【问题描述】:
我为产品详情创建了一个 API 在这个 API 中,我还需要附加类似的产品作为响应。
所以对于类似的产品场景如下 1) 价格明智(+10 和 -10) 2)然后在类别之后(来自同一类别)
例如 我的产品编号为 #30,价格为 30 美元,类别为“啤酒” 所以类似的产品列表将如下所示 首先显示所有产品啤酒类别产品,范围在 30 美元的 +10 和 -10 之间(我的意思是黑白范围 20 到 40) 然后附上其他属于同一类别“啤酒”的产品,最接近的价格为 30 美元 假设相同类别的产品价格如下 10 美元、17 美元、45 美元、42 美元、50 美元
因此产品将按以下方式排序,壁橱至 30 美元 42 美元(42 美元 - 30 美元 = 12 美元)、17 美元(30 美元 - 17 美元 = 13 美元)、45 美元(45 美元 - 30 美元 = 15 美元)、10 美元(30 美元 - 10 美元 = 20 美元)、50 美元(50 美元 - 30 美元 = 20 美元)
对于我在查询下方创建的 +10 -10 范围内的类似产品
similar_price = Product.includes(:sub_category, :brand, :product_type, :category).in_stock.where("(actual_price BETWEEN ? AND ? AND category_id = ? ) ", min_price, max_price, self.category_id)
现在我需要以最接近的价格订购产品。 如何通过 rails 中的 postgres 查询解决此问题?
【问题讨论】: