问题标签 [find-by-sql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
72 浏览

sql - 是否可以定义一个 SQL 查询,从一个表中提取一组允许的外键,然后使用它们过滤另一个表?

具体来说,我试图弄清楚是否有可能生成 SQL 来执行我想要输入 Ruby-on-Rails 的 find_by_sql 方法的操作。

想象有用户,他们通过连接表 Friendships 周期性地连接到其他用户。每个用户都可以创建评论。

我想要一个 SQL 查询来返回给定用户的任何朋友创建的最新 100 条评论,以便我可以将它们全部显示在一个方便的位置供用户查看。

这很棘手,因为基本上我希望通过他们的作者的外键是否包含在从用户朋友的主键派生的一组键中来过滤评论。

编辑:澄清设置。我不确定如何编写模式定义,所以我将用 Rails 来描述它。

0 投票
1 回答
776 浏览

ruby-on-rails - Ruby on Rails:使用 find_by_sql 实例化关联模型?

显然,在 Rails 查找查询中不能同时使用 include 和 select,这已被反复标记为 wontfix: http : //dev.rubyonrails.org/ticket/7147
http://dev.rubyonrails.org/ticket
/5371

这让我觉得非常不方便,因为我想要使用 include 的时间与我想要使用 select 的时间完全相同——当每一点性能都很重要时。

有没有办法解决这个问题并使用 find_by_sql 或任何其他方法手动生成组合的包含与选择?问题是,我不知道有什么方法可以模拟包含的功能,它在内存中实例化模型以保存包含的关联模型,这样我就可以输入 model1.associated_models 并让它不再访问数据库。

0 投票
1 回答
210 浏览

ruby-on-rails - Ruby on Rails:是否可以:包括圆形连接表的另一条腿?

我正在开发一个模拟用户之间友谊的应用程序。

当两个用户成为朋友时,会创建友谊类的两个实例,一个用于友谊的每个方向。这是必要的,因为可以在每个方向上设置不同的权限,也为了便于查找,所以我们总是按 user_id 进行搜索,而无需创建第二个索引并且需要加倍搜索。

是否有可能使用 find 或命名范围来拉取朋友以及反友谊?我想这样做是因为我允许用户编辑存储在他们自己的友谊分支中的友谊权限,因此当我向用户显示朋友的信息时,我需要检查对面的分支以查看如何设置权限。(顺便说一句,这似乎是一种合乎逻辑的做事方式吗?要么存储到对面,要么在展示前必须咨询对面,这两种方式都令人不快。)

我已经设法编写了一批完成这项工作的 SQL:

该函数返回用户的所有朋友姓名和 ID,以及权限。但是,这似乎并不理想,这意味着我必须通过调用friend.permissions 来访问权限,其中权限实际上不是朋友的成员,而是由find_by_sql 合并为一个属性。总而言之,我真的更愿意使用 named_scope 或 find 调用来执行此操作,但不幸的是,我使用该方法所做的每一次尝试都导致了错误,因为 Rails 因加入相同的 Friendship 连接表而窒息查询两次。

0 投票
3 回答
7337 浏览

ruby-on-rails - 是否可以将 will_paginate 与 find_by_sql 结合使用?

在我的 Rails 应用程序中,我想使用will_paginategem 对我的 SQL 查询进行分页。那可能吗?我尝试做这样的事情,但没有奏效:

如果没有,你能推荐一种解决方法吗?我不想写自己的分页。

0 投票
1 回答
212 浏览

ruby-on-rails - 如何使 activerecord 使用 find_by_sql 动态生成的字段

我将 find_by_sql 与 Activerecord 一起使用,我在那里生成了另一个字段,该字段不在原始表中,作为不同字段的组合,例如:

如果我尝试访问新生成的字段,例如:

我什么都得不到!你建议我应该如何解决这个问题

0 投票
2 回答
1260 浏览

ruby-on-rails - Ruby 中的 ActiveRecord 自定义 SQL

我需要在下面执行这些 SQL,但我无法得到结果。

但我似乎无法将结果传递给 newid。我得到的唯一值是 [#<Header>] 任何人都可以帮助我为 Ruby 创建正确的语句吗?

编辑:表字段

谢谢你。

0 投票
2 回答
752 浏览

sql - sql left join where rails

因为我使用rails,所以我对sql已经生疏了,因为我很少在rails中使用它。我有两个相关的表:comments 1:m comment_views

我想找到所有 comment_views.viewed 为假的评论。问题是,对于某些评论,comment_views 中还没有相关记录。

到目前为止我有

但如前所述,当comment_views 中没有记录时,它不会返回评论。

0 投票
1 回答
2421 浏览

ruby-on-rails - Using temporary tables in rails by a sql statement

Im trying to find a way to delete all duplicated entries in a table of my db. Cause I have to make some further calculations with this duplicates before I delete them, I will have to put them in a temporary table.

Retrieving of the duplicates is a rather complex sql statement, which I rather don't want do execute in active_record manner...

How can I generate this temporary table with this statement? Does it make sense to use ar-extentions for this task?

0 投票
1 回答
187 浏览

ruby-on-rails - ActiveRecord 并从关系 find_by_sql 或 named_scope 中获取未使用的记录?

一些上下文:

我有一些看起来像这样的模型

演员 has_many Acts

行为 belongs_to 演员,belongs_to 决策

决定 has_many 行为,belongs_to 提示

提示 has_many 决定

我需要做的是在 ActorsController 中,获取所有可用 Prompts 中尚未使用的随机 Prompt。

在我的 Rails 应用程序中,Actor 会收到提示,让他们做出一些选择。当他们做出选择(决定)时,它作为一个动作保存在数据库中。

我尝试了 named_scope 和 find_by_sql 的各种迭代,但都没有奏效,我什至不确定我的想法是否正确,因为有很多模型在工作,我似乎不知道从哪儿开始。

我希望这可以让我了解我的反对意见。我什至会很感激一个通用的指针来形成一个攻击计划。

谢谢!

编辑

在咀嚼了几个小时之后,我得到了一些工作,但它非常混乱,而且我的日志中充满了 SQL 调用,所以它绝对可以受到批评。

在提示模型中:

在 Actor 模型中:

在 ActorsController 中:

显然 used_prompts 中的 if 块在这里是一个有罪的一方,但我不知道更好的方法来处理这个问题,因为我不能做 self.acts.decisions.each 或类似的事情。也许有人可以教我:)

0 投票
2 回答
1824 浏览

ruby-on-rails - ActiveRecord 自定义查询与 find_by_sql 加载

我有一个看起来像这样的自定义查询

其中 self 是一个用户对象

我设法 为相同的生成等效的SQL

这里看起来如何

有了对SQL 和 ActiveRecord的良好理解,我假设(大多数人都同意) 从上述查询获得的结果可能比从 find_by_sql(sql) one 获得的结果需要更长的时间

但出人意料

当我运行上述两个时,我发现 ActiveRecord 自定义查询在加载时间方面领先于 ActiveRecord“find_by_sql” 这里是测试结果

ActiveRecord 自定义查询加载时间

网站负载(0.9ms)

网站栏目(1.0ms)

find_by_sql 加载时间

网站负载(1.3ms)

网站栏目(1.0ms)

我再次重复测试,结果仍然相同(自定义查询赢得了战斗)

我知道差异并没有那么大,但我仍然无法弄清楚为什么普通的 find_by_sql 查询比自定义查询慢

任何人都可以分享这一点。

不管怎么说,还是要谢谢你

问候维伦·内吉