【问题标题】:SQL query - select only products ids which was sorted top in another tableSQL 查询 - 仅选择在另一个表中排在首位的产品 ID
【发布时间】:2016-02-24 17:24:23
【问题描述】:

好的,我有需要创建 SQL 查询的情况,该查询将从 table1 (products) 为我返回 ID,该 ID 由 table2 (category) 排序,每个类别限制为 10。

所以,我需要什么。在订购这些产品后,选择出现在“前 10”(限制为 10)结果中的每个类别的产品 ID。每个产品都有一些列,我按这些列排序。例如,同一产品可以出现在前 10 名的不同类别中。所以我需要使用 distinct 来获取 uniq 结果。

【问题讨论】:

  • 造成你困难的部分是什么?

标签: sql ruby-on-rails postgresql join sql-order-by


【解决方案1】:

产品和类别之间有什么关系吗?您订购的产品列中有什么?不同的产品列表之间可以重复吗?如果您需要真正的帮助,您应该真正发布模型/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

【讨论】:

    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 2012-08-11
    • 2021-07-07
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多