SQL查询-仅选择在另一个表中排名靠前的产品ID

SQL查询-仅选择在另一个表中排名靠前的产品ID,sql,ruby-on-rails,postgresql,join,sql-order-by,Sql,Ruby On Rails,Postgresql,Join,Sql Order By,好的,我需要创建SQL查询,该查询将从表1(产品)返回ID,表1由表2(类别)排序,每个类别限制10个ID 所以,我需要什么。在订购这些产品后,在每个类别中选择出现在“前10名”(受限于10名)结果中的产品ID。每个产品都有一些列,我按这些列进行订购。例如,同一产品可能出现在前10名的不同类别上。因此,我需要使用distinct获得uniq结果。产品和类别之间是否存在任何关系?您订购的产品列是什么?不同的产品列表之间可以重复吗?如果需要真正的帮助,您应该发布模型/sql表,并更清楚地解释您试图做

好的,我需要创建SQL查询,该查询将从表1(
产品
)返回ID,表1由表2(
类别
)排序,每个类别限制10个ID


所以,我需要什么。在订购这些产品后,在每个类别中选择出现在“前10名”(受限于10名)结果中的产品ID。每个产品都有一些列,我按这些列进行订购。例如,同一产品可能出现在前10名的不同类别上。因此,我需要使用
distinct
获得uniq结果。

产品和类别之间是否存在任何关系?您订购的产品列是什么?不同的产品列表之间可以重复吗?如果需要真正的帮助,您应该发布模型/sql表,并更清楚地解释您试图做什么

假设它们是多对多/关系是在rails中建立的,并且在多个列表中有相同的产品是可以的,我会这样做

top_products = {}
Category.all.each do |cat|
  top_products[cat.name] = cat.products.order("some_product_column DESC").limit(10).map{|p| p.id}
end

给你带来困难的部分是什么?