我已经为产品细节创建了一个API
在这个API中,我还需要附加类似的产品作为响应。
所以对于类似的产品场景如下
1)价格方面(+10和-10)
2)然后按类别分类(来自同一类别)
例如
我有id#30的产品,价格是30美元,类别是“啤酒”
所以类似的产品列表如下
首先展示所有啤酒类产品,价格在30美元的+10到-10之间(我的意思是b/w范围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查询解决这个问题?

最佳答案

是的,您可以使用如下简单的订单查询来执行此操作

`Product.where("product.category_id = ?", "category_id").order("abs(products.price - #{your_selected_product_price})")`

关于ruby-on-rails - SQL-按最接近的值对记录进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48563576/

10-16 22:57