首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL转换为Arel或Squeel

将SQL转换为Arel或Squeel
EN

Stack Overflow用户
提问于 2012-12-08 12:21:23
回答 1查看 502关注 0票数 0

tl;dr

如何在SQL下面转换为Arel(或Rails中任何被认为是标准的)

代码语言:javascript
复制
@toplist = ActiveRecord::Base.connection.execute(
     'select ci.crash_info_id,
        count(distinct(user_guid))[Occurences], 
        c.md5 
      from crashes ci 
        join crash_infos c on c.id=crash_info_id 
      group by ci.crash_info_id
      order by [Occurences] desc')

-结束,博士

我正在做一个小的网络项目,它的目标是把我们的客户崩溃报告(当我们的桌面应用程序崩溃,我们发送诊断到我们的服务器),分析,然后显示什么是最常见的错误,导致我们的应用程序崩溃。这样我们就可以专注于修复那些影响到大部分用户的错误。

我有两张桌子:

  1. crash_infos - id,md5(堆栈跟踪的md5)。在.net中,堆栈跟踪和异常消息有时被.net翻译成用户的本机语言!所以我基本上清理了异常,删除了特定语言的部分,并从其中生成了md5 )
  2. 崩溃- id,user_guid(用户id),crash_info_id(id到crash_infos表)

现在,我想要做一个查询,显示唯一用户的大多数常见崩溃(避免对同一用户多次计算相同的崩溃次数),并按崩溃次数对其进行排序。不幸的是,我不知道足够多的Arel(或者其他什么是ruby on rails的方式),所以我得到了原始SQL :(

代码语言:javascript
复制
@toplist = ActiveRecord::Base.connection.execute(
  'select ci.crash_info_id,
     count(distinct(user_guid))[Occurences], 
     c.md5 
   from crashes ci 
   join crash_infos c on c.id=crash_info_id 
   group by ci.crash_info_id 
   order by [Occurences] desc')

我怎样才能把这个转变成更“粗俗”的东西呢?

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-08 17:08:38

不确定这是否真的更好,但至少您应该有一个独立于数据库的查询.

代码语言:javascript
复制
crashes     = Arel::Table.new(:crashes)
crash_infos = Arel::Table.new(:crash_infos)

crashes.
    project(crashes[:crash_info_id], crash_infos[:md5], Arel::Nodes::Count.new([crashes[:user_guid]], true, "occurences")).
    join(crash_infos).on(crashes[:crash_info_id].eq(crash_infos[:id])).
    group(crashes[:crash_info_id]).
    order("occurences DESC").
    to_sql

给予:

代码语言:javascript
复制
SELECT "crashes"."crash_info_id", "crash_infos"."md5", COUNT(DISTINCT "crashes"."user_guid") AS occurences FROM "crashes" INNER JOIN "crash_infos" ON "crashes"."crash_info_id" = "crash_infos"."id" GROUP BY "crashes"."crash_info_id" ORDER BY occurences DESC
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13777425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档