问题标签 [join]

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 投票
8 回答
88058 浏览

sql - 两列性能问题的左外连接

我正在使用类似于以下形式的 SQL 查询:

它要么太慢,要么陷入僵局,因为返回至少需要 4 分钟。如果我将其更改为:

然后它工作正常(尽管没有返回正确的列数)。有什么办法可以加快这个速度吗?

更新:如果我切换后一个查询的最后两行,它会做同样的事情:

更新2: 这些实际上是我加入的观点。不幸的是,它们位于我无法控制的数据库中,因此我无法(轻松)对索引进行任何更改。我倾向于同意这是一个索引问题。我会在接受答案之前稍等片刻,以防有一些我不知道的神奇方法来调整这个查询。否则,我将接受当前答案之一,并尝试找出另一种方法来做我想做的事情。感谢大家到目前为止的帮助。

0 投票
4 回答
2110 浏览

python - GAE - 如何在没有连接的情况下生活?

示例问题:

实体:

  • 用户包含姓名和朋友列表(用户参考)
  • 博客文章包含标题、内容、日期和作者(用户)

要求:

我想要一个显示用户朋友最近 10 篇文章的标题和博客链接的页面。我还希望能够继续翻阅旧条目。

SQL解决方案:

所以在 sql 领域它会是这样的:

我能想到的 GAE 解决方案是:

  • 加载用户,循环浏览朋友列表并加载他们最新的博客文章。最后合并所有博文,找到最新的10篇博文
  • 在博客文章中列出所有将作者作为朋友的用户。这意味着简单的阅读,但在添加拥有大量博客文章的朋友时会导致配额超载。

我不相信这些解决方案中的任何一个都会扩展。

我确定其他人已经遇到了这个问题,但我已经搜索过、观看过 google io 视频、阅读过其他人的代码……我错过了什么?

0 投票
9 回答
391287 浏览

sql - 左、右、外连接和内连接有什么区别?

我想知道如何区分所有这些不同的连接......

0 投票
3 回答
1866 浏览

asp.net - linq to sql 并仅从连接表中检索特定行

我有两张表 1) 产品 2) 类别

Product 表有一个名为“CategoryID”的字段,Category 表有一个名为“CategoryName”、ID、DateCreated 和其他一些字段。

我想使用 LINQ to SQL 来查询所有产品行以及 Category.CategoryName。此查询将在数据源中使用并绑定到 ListView。

我知道我可以将 LoadWith 选项与 DataContext 和连接一起使用。但问题是我最终得到了 Product 和 Category 中的所有行。我真正想要的是 Product 中的所有行,只是Category.CategoryName

完美的解决方案是,如果 LoadWith 选项允许您指定要返回的字段,但正如在此处回答的那样,这是不可能的。

我确实找到了一种方法,创建一个自定义类,它具有我想要返回的完全相同的字段。所以例如

但问题是 select 语句最终很长。例如...

这变得非常容易出错。

所以我的问题 - 有没有更好的方法来做到这一点?

编辑/澄清:我应该提到我需要中间类的原因是因为我需要能够将结果集作为特定类型返回,在本例中为 ProductInfo

0 投票
8 回答
131933 浏览

java - JPA 急切未加入

JPA 的 fetch 策略究竟控制什么?我无法发现急切和懒惰之间的任何区别。在这两种情况下,JPA/Hibernate 都不会自动加入多对一关系。

示例:人员只有一个地址。一个地址可以属于很多人。JPA 带注释的实体类如下所示:

如果我使用 JPA 查询:

JPA/Hibernate 生成一个 SQL 查询以从 Person 表中进行选择,然后为每个人生成一个不同的地址查询:

这对于大型结果集非常不利。如果有 1000 人,它会生成 1001 个查询(1 个来自 Person,1000 个来自 Address)。我知道这一点是因为我正在查看 MySQL 的查询日志。我的理解是,将地址的获取类型设置为 eager 会导致 JPA/Hibernate 自动使用连接进行查询。但是,无论获取类型如何,它仍然会为关系生成不同的查询。

只有当我明确告诉它加入时,它才会真正加入:

我在这里错过了什么吗?我现在必须手动编写每个查询的代码,以便它离开多对一关系。我在 MySQL 中使用 Hibernate 的 JPA 实现。

编辑:它似乎不影响 JPA 查询(参见 Hibernate FAQ herehere) 。FetchType所以就我而言,我已经明确告诉它加入。

0 投票
5 回答
8246 浏览

java - JPA/Hibernate 最大连接数?

JPA/Hibernate 查询中允许的连接数是否有限制?

由于 Hibernate不会自动加入,因此我必须在 JPA/Hibernate 查询中明确指定联接。例如,人有地址,地址有状态。以下查询检索地址和状态已满载的人员:

随着我不断添加连接,我最终(在 12-13 个左连接之后)达到了 Hibernate 生成无效 SQL 的限制:

我确实为我的数据库实现 MySQL 设置了 Hibernate 的方言:

Hibernate 在单个查询中可以处理的连接数是否有限制?

编辑1:日志文件中包含以下内容:

但是,something69_2_不会出现在 SQL 查询中。这就像 Hibernate 生成了一个 SQL 查询并期望something69_2_在结果中,但事实并非如此。

编辑 2:类似问题记录为未修复的Hibernate 错误 HHH-3035

编辑 3:这是一个记录在案的Hibernate 错误 HHH-3636,已修复但尚未包含在任何版本中。

编辑 4:我构建了 hibernate-core 3.3.2-SNAPSHOT,其中包括错误修复 HHH-3636,但它没有解决这个问题。

编辑 5:错误行为似乎是由LEFT JOIN FETCHManyToMany 或 OneToMany 关系上的多个触发的。一个会起作用,两个或三个会导致错误。

编辑 6:这是堆栈跟踪:

编辑 7:所有这些连接的原因是为了避免 Hibernate 执行 n+1 查询,请参阅Hibernate FAQ 关于如何在运行 Hibernate 查询时避免 n+1 SQL SELECT 查询?

0 投票
6 回答
5028 浏览

sql - 条件连接 - 动态 SQL

在这里工作的 DBA 正试图将我简单的存储过程变成一个动态的 sql 怪物。诚然,我的存储过程可能没有他们想要的那么快,但我不禁相信有一种足够的方法来执行基本上是条件连接的操作。

这是我的存储过程的示例:

UDF 将逗号分隔的过滤器列表(例如银行名称)转换为表格。

显然,在 where 子句中包含过滤条件并不理想。欢迎任何关于基于存储的 proc 参数有条件地加入的更好方法的建议。除此之外,是否有人对动态 sql 方法有任何建议或反对?

谢谢

0 投票
3 回答
346 浏览

mysql - MySQL 连接查询帮助

基本上我有一个类似以下的mysql查询:

而我需要做的是从帖子表中获取标题,并从投票表中获取当前投票值。

目前,除非发生投票,否则投票不会存储到投票表中。因此,所有票数为 0 的帖子都不在投票表中。

这会导致错误,它试图获取帖子 id = 投票值 id 的标题和投票值。如果投票表中没有任何记录,则值应返回为 NULL 或 0,但此时整个查询返回为 null,因此我什至无法返回标题。

如何在一个查询中解决所有问题?我不想使用多个查询...谢谢:)

0 投票
1 回答
3647 浏览

ruby-on-rails - Rails:has_many :through 还是 has_many_and_belongs_to?

我有一个应用程序,我想通过另一个模型(即任务 1 > 关系 < 任务 2)将模型的一个实例链接到同一模型的另一个实例,并且想知道我是否可以使用 has_many :through 来实现这一点。

基本上,关系模型将具有额外的信息(type_of_relationship,lag),因此将其作为连接模型是理想的。然而,没有两个模型可以加入,只有一个……它自己。has_many :through 还能用吗?如果是这样,连接表的外观如何?使用 Rails 约定,您将有两个名为 Activity_id 的列,这显然在数据库中不起作用。

或者,我可以使用 has_many_and_belongs_to 在任务模型和关系模型之间设置多对多,但我不确定这是否准确地描述了一种关系,该关系应该只链接任何一个关系模型中的两个任务模型(当然任务可能属于多个关系,因此是多对多)。

我的直觉说要使用 has_many_and_belongs_to 并整理模型中的规则,但有更好的方法吗?我要在这个上兜圈子!

任何帮助表示赞赏。

0 投票
4 回答
4193 浏览

.net - Linq To Sql 多对多连接表

我是一位经验丰富的 Rails 开发人员,我想我会尝试 ASP.NET 的 MVC 版本。在这样做时,我还决定尝试 Linq->Sql...

我对 Linq->Sql 处理连接的方式有点困惑。

我的架构的一个简单示例是:

书籍
id
标题

类别:
id
名称

book_categories :
book_id
category_id

简单地将这些表拖到 .dbml 文件似乎并没有做到这一点。我在我的 Book 类 book_categories 上获得了一个属性,我期望的是一个可以迭代并直接获取 Category 类的属性。

现在我必须做一些感觉非常错误的事情

[回应接受
的答案]我勉强接受了“编写自己的胶水代码”的答案。在继续我对 Linq->Sql 的研究之后,我发现它显然正在慢慢被放开,以支持(更强大的 IMO)实体框架。EF 仍然允许人们使用 LINQ 进行查询,并且像 Ruby 的 ActiveRecord 一样可以很好地确定关系。