加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Rails Activerecord关系:使用子查询作为SQL select语句的表

发布时间:2020-12-12 08:23:02 所属栏目:MsSql教程 来源:网络整理
导读:有人可以帮我弄清楚如何使用Rails编写以下SQL(我正在使用Rails 4)Activerecord方法?我知道你可以用find_by_sql这样做,但我想保留活动记录关系.这是我正在尝试创建的postGreSQL数据库的sql: SELECT * FROM (SELECT DISTINCT ON(table_a.id) table_a.name as
有人可以帮我弄清楚如何使用Rails编写以下SQL(我正在使用Rails 4)Activerecord方法?我知道你可以用find_by_sql这样做,但我想保留活动记录关系.这是我正在尝试创建的postGreSQL数据库的sql:
SELECT * FROM 
(SELECT DISTINCT ON(table_a.id) table_a.name as alias_a,table_b.id,table_b.time
FROM table_1
LEFT OUTER JOIN table_b ON table_a.id = table_b.id
ORDER BY table_a.id,table_b.time asc) AS subquery
ORDER BY alias_a asc

对于我的子查询,我有以下(它生成上面的子查询的sql):

@subquery = table_a.select("DISTINCT ON(table_a.id) table_a.name as alias_a,table_b.time")     
@subquery = @subquery.joins("LEFT OUTER JOIN table_b ON table_a.id = table_b.id")
@subquery = @subquery.order("table_a.id,table_b.time asc")

但是,我不知道如何编写一个使用@subquery作为外部select语句的表的select语句.

解决方法

使用Active Record界面中的from()方法.

例如:

@subquery = table_a.select("DISTINCT ON(table_a.id) table_a.name as alias_a,table_b.time asc")

然后在外部查询中使用它:

@query = OtherModel.from("(#{@subquery.to_sql}) table_name,other_model_table,etc ...").where(:field => table_name.alias_a) ...etc.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读