【问题标题】:Rails 4 How to find the categories with all expired products using an efficient query?Rails 4 如何使用高效查询查找所有过期产品的类别?
【发布时间】:2021-01-06 10:20:33
【问题描述】:

我是 RoR 的初学者。我有两张桌子CategoryProduct。每个Category 有很多Products。我们可以通过product.category_id 获得产品的类别。有些产品可能没有任何类别。在这种情况下,它将是 nil。我们应该将这些产品与category_id 省略为nilProduct 中有一个名为 validity_time 的字段,类型为 datetime。我需要找到该类别下的所有产品必须有 validity_time 超过 1 个月的类别。(< Time.now - 1.month)。 如何按category_id 对产品进行分组并检查validity_time 并返回结果类别?执行此操作的有效查询是什么?


提前致谢!

【问题讨论】:

    标签: sql postgresql ruby-on-rails-4 group-by query-optimization


    【解决方案1】:

    最简单的方法是倒置条件,即类别中没有产品的validity_time 大于一个月前:

    select * from category
    where not exists 
    (
     select from product
     where product.category_id = category.id 
     and product.validity_time >= now() - interval '1 month'
    )
    

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      相关资源
      最近更新 更多