Sql 每个类别有10个随机条目

Sql 每个类别有10个随机条目,sql,ruby-on-rails,ruby,random,postgresql-9.1,Sql,Ruby On Rails,Ruby,Random,Postgresql 9.1,我有这张桌子 主题类别->有许多->主题子类别->有许多->主题->有许多->问题>选择 我想做的是,在给定主题类别id的情况下,每个主题子类别随机抽取10个问题 我已经用SQL查询完成了 SELECT x.* FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY t.TopicSubCatId) AS rowNumber, t.* FROM ( SELECT abc.TopicSubCatId as TopicSu

我有这张桌子

主题类别->有许多->主题子类别->有许多->主题->有许多->问题>选择

我想做的是,在给定主题类别id的情况下,每个主题子类别随机抽取10个问题

我已经用SQL查询完成了

SELECT x.*
FROM (
    SELECT ROW_NUMBER() OVER (PARTITION BY t.TopicSubCatId) AS rowNumber,
    t.*
    FROM (
         SELECT abc.TopicSubCatId as TopicSubCatId, q.id as QuestionId, q.*
         FROM questions q
         LEFT JOIN topics t on t.id = q.topic_id
         LEFT JOIN (SELECT tsc.id as TopicSubCatId
              FROM topic_categories tc 
              LEFT JOIN topic_sub_categories tsc ON tc.id = tsc.topic_category_id 
              WHERE tsc.id IS NOT NULL 
              AND tc.id = 1 
              GROUP BY tsc.id, tsc.name) abc ON t.topic_sub_category_id = abc.TopicSubCatId
         ) t) x
where x.rowNumber <= 3
order by random()
您能否建议如何使用active record或任何其他方法来查询我的问题


顺便说一句:我正在使用postgresql

问题
模型创建一个方法,为您实现这一点。然后,你可以做
q.random_chooses.each do | c |
如果我能将查询转换为活动记录,我就可以这样做。我只能通过ActiveRecord::Base.connection.execute()执行该查询,而这不会返回objectcheckout问题。每当我遇到想要在rails中使用的复杂查询时,我都会尝试将它们分解为依赖模型,然后为每个模型编写作用域。然后,您可以使用Peter的方法将作用域链接在一起以创建聚合queryAgree
-@questions.each do |q|
  q.choices.order("RANDOM()").each do |c|
  end
end