问题标签 [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 投票
2 回答
2546 浏览

sql - 仅获取与联接表中的所有条目匹配的行 (SQL)

我有以下五个表:

  • 互联网服务提供商
  • 产品
  • 联系
  • 添加在
  • AddOn/Product(多对多关系的数据透视表)。

每个产品都链接到一个 ISP,每个连接都列出一个产品。通过使用数据透视表(只有两个字段,一个用于产品 ID,一个用于附加组件 ID),每个产品都可以有多个附加组件。

我感兴趣的结果是与列出的插件的每个连接(为此,我使用 MySQL 的 GROUP_CONCAT 来制作插件名称字段的逗号分隔列表)。这工作正常,查询看起来像这样:

我正在使用 LEFT JOINS,因为产品可能根本没有插件。

我的问题是可以选择列出的连接必须具有的一些插件,以插件 ID 列表的形式呈现,例如 (1,14,237)。如果我将其作为附加条件放入 JOIN 语句(AND pa.addon_id IN (...))中,它将返回仅具有列出的插件之一的所有连接,但不一定是全部。

是否有某种方法可以通过 SQL 返回所有至少具有所有插件(它们也可以有附加)的连接?

0 投票
16 回答
46916 浏览

sql - 为什么 SQL ANSI-92 标准没有比 ANSI-89 更好地采用?

在我工作过的每一家公司,我发现人们仍在使用 ANSI-89 标准编写 SQL 查询:

而不是 ANSI-92 标准:

对于像这样一个非常简单的查询,可读性没有太大差异,但是对于大型查询,我发现将我的连接条件分组并列出表可以更容易地查看我在连接中可能遇到的问题,并且让我将所有过滤保留在 WHERE 子句中。更不用说我觉得外连接比Oracle中的(+)语法直观多了。

当我尝试向人们宣传 ANSI-92 时,使用 ANSI-92 优于 ANSI-89 是否有任何具体的性能优势?我会自己尝试,但是我们这里的 Oracle 设置不允许我们使用 EXPLAIN PLAN - 不希望人们尝试优化他们的代码,对吗?

0 投票
5 回答
16274 浏览

sql - SQL JOIN 查询编写

我正在尝试编写一个涉及两个表的简单查询。"person" 表有一个唯一的person_id和 a name,而 "friends" 表有 aperson_id和 a ,它们是person 表中friend_ida 的 FK 。person_id

我想选择人 1 的所有朋友的名字。

我可以使用以下IN语句轻松做到这一点:

但是,我不擅长写JOIN陈述。有人可以帮我写等效的加入吗?

显然这是一个人为的例子,但我已经尝试使用我的真实数据并且在概念上遗漏了一些东西。谢谢。

0 投票
3 回答
220 浏览

php - mysql加入问题

我有两个包含以下列的表:

表格1:

表2:

我想要实现的是从 table1 中选择代理部门等于 table2 的所有行。

我尝试了一些不同的连接语句,但要么语法错误,要么无法与此表设置一起使用。我是 MySQL 的初学者,从我读过的内容来看,JOIN 是最复杂的!

我考虑过的另一个选择是将“部门”列复制到 table1 中,但这需要在前端进行更多的编码,我试图看看是否可以在不这样做的情况下达到预期的结果。

非常感谢任何帮助。

0 投票
3 回答
892 浏览

sql - 简单的 SQL 代码避开了我.. 合并两个不匹配的表

我从 1 个表中选择 1 个字段并将其存储到临时表中。

有时该表以 0 行结束。

我想将该字段添加到另一个具有 20 多个字段的表中

由于字段 # 不匹配,常规联合对我不起作用。外部对我不起作用,因为没有什么可比较的。NVL 不适用于第一个临时表。

有人知道该怎么做吗?

更新:

我没有提到......当检索 1 个字段的表在其他情况下找到匹配项时,我现在使用的这段代码可以工作......

0 投票
2 回答
1479 浏览

sql - 简单的 T-SQL 连接问题

我试图通过加入 table2 并在 WHERE 语句中使用 table2 列来从 table1 中选择一条记录。table1 中的 Col1 和 Col2 可以存储在 table2 的 col1 中。我需要将 table2 的 col1 与 table1 中 col1 或 col2 的值连接起来

这是我创建的sql语句(伪):

解决这个问题的最佳方法是什么?

0 投票
5 回答
2399 浏览

sql - 自连接查询

考虑下表:

我正在努力寻找那些有家用电话但没有手机的人。

此查询有效:

但是这个没有:

两者之间的唯一区别是h.type = 'home'条件的位置 - 第一个它在where子句中,第二个它是on子句的一部分。

为什么第二个查询不返回与第一个相同的结果?

0 投票
5 回答
41479 浏览

linq-to-sql - linq to sql:连接同一个表中的多个列

如何通过 Linq 内部连接来自同一个表的多个列?

例如:我已经有了这个...

我需要添加这个...

0 投票
3 回答
4182 浏览

ms-access - MS Access 如何连接链接表(链接到同一个 SQL Server 数据库)?

只要每个表都链接到同一个 SQL Server 数据库中的表,我就有带有链接表的 MS Access 数据库。我在 Access 中有一个查询,它连接两个表(特别是我正在使用连接更新基于另一个表的表)。

问题是 Access 在进行联接之前是否“下载”了所有表数据?还是很聪明并在 SQL Server 上加入它?

查询是:

0 投票
2 回答
1726 浏览

performance - 在 PostgreSQL 中,在同一个表中包含 TEXT 列是否比单独的表中更快?

您认为哪种设计在 PostgreSQL 上运行得更快?

  1. 制作一个 15 列的 varchars 等表,但将所有 TEXT 列放在一个单独的表中,并通过 fkey 链接返回到该表。假设您要搜索 ID 为“4”的记录,然后将所有行拉回,包括连接表中 TEXT 列中的内容。让我们假设这些表有 500,000 行。

  2. 制作一个 15 列的 varchars 等表,并将您的 TEXT 列包含在同一个表中。再次想象与上面相同的情况——获取记录 ID 4 并提取完整记录,表中有 500,000 行。

我的意思是,在大多数数据库中,按照我的理解,当您深入了解这些 TEXT 列如何工作的物理层时,它们实际上在每一行的表列中保留了一个小 ID,并且该 ID 单独存在,数据库中的独占页块(或其他命名法)。所以,对我来说,似乎选项 B 会运行得更快,因为不需要 fkey 连接的开销,并且因为 TEXT 列实际上并没有占用该给定表中该列中的整数空间——并且该整数是数据库中其他地方页面块的键。