问题标签 [full-outer-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 投票
1 回答
1319 浏览

ms-access - 在两个以上的表上使用 Access 模拟 FULL OUTER JOIN

我学到了 Access 不允许您进行完整外连接的艰难方法,并且在阅读如何模拟一个外连接时,我已经开始了解如何这样做,但是在尝试将其应用于两个以上表时遇到问题.

是否像以下操作一样简单?

0 投票
1 回答
43 浏览

sql-server - 商店编号上的多个完全外连接

我有一个 SQL Server 查询,显示每个商店编号、今天的销售额与去年的销售额。来自两个不同的表。

现在我想添加另一个显示商店名称的表。我怎样才能做到这一点?

商店名称可在名为[Company$Store]“名称”的表中找到。我希望它加入[Company$Store].No_ = [Company$Trans_ Sales Entry].[Store No_]

这是我要添加它的查询:

希望有人能帮忙!

0 投票
1 回答
70 浏览

tsql - 在rec上使用完全外连接时如何找到百分比差异

我想找到一种迭代方法来获取与完全外连接上返回的数据的百分比差异,该方法允许当前值和以前的值都为空,因为它们可能已从任一结果集中退出。

在通常的计算下允许先前的值是好的,这将是......

但是,这不允许当前值为零,并且您将得到除以零的错误。到目前为止,我想到的唯一相对安全的解决方法是将 isnull 值设置为 1,然后检查数量是否与当前值匹配并设置为 100,但我认为我不能长期依赖它,确实有人有更好的产品吗?

0 投票
0 回答
390 浏览

sql - SQL Server:FULL OUTER JOIN 异常行为

我有 2 张桌子。我想从两个表中获取记录,同时FULL OUTER JOIN从其中一个表中过滤掉一些数据。

  1. 14026 - 公共记录的总数。
  2. 8428 - 表 1 中的唯一记录
  3. 1512 - 表 2 中的唯一记录。

我应该得到的总记录是 23966。但是,以下查询返回不同的结果。

查询 1 -

输出 - 23966 行(预期)。

查询 2 -

输出 - 48804 行。

问题 3 -

输出 - 21830。

根据我的理解,至少第三个查询也应该给我与查询 1 相同的结果。有人可以解释一下 SQL Server 如何处理这三个查询吗?

0 投票
1 回答
284 浏览

sql - 从 Oracle 数据库中的复杂 n:m 关系中获取结果集

我尝试编写一个 SQL 查询(使用完全外连接),它从三个通过 n:m-relationships 相互关联的表创建一个完整的结果集。

初始情况是具有三个实体的规范化数据模型:person、artifact 和 location。每个实体都通过由交集表表示的 m 关系与每个其他实体相关。

我的目标是从包含所有人员、工件和位置的所有三个表中创建一个结果集。

为了解决这个问题,我尝试了以下语句:

此查询在语法上是正确的,但返回磨损的内容,因为连接处理一个接一个的表。归根结底,并不是每个关系都在结果集中表示。

有没有什么方法可以组合上表以获得完整正确的结果集?

编辑。以下是一些示例记录(我坚持交叉表):

当然,数据可能比这个例子复杂得多。正如下面评论中提到的,也可能存在循环关系。

我不确定结果集应该是什么样子,我什至不确定这种组合是否可行?

非常感谢!

问候

0 投票
2 回答
104 浏览

mysql - 如何在 SQL 中连接两个表并且每个连接索引只获取 1 行

如果我有 3 个如下表:

表 B:

表 C:

如何加入 2 个表以获得以下结果:

如果我执行以下操作:

我得到以下信息:

0 投票
2 回答
769 浏览

sql - 独立地对列进行排序,这样所有空值都是每列的最后一个

这是一个名为的示例表animal

现在,我想要的是这个结果:

名称应该是结果的列,以不同的颜色值作为行。

我的第一个想法是:

但我不知道什么样的加入会奏效。

第二个想法:

这将返回:

我想将此表中的空值移到最后。我尝试过了:

但我不确定这是否真的是我想要的,Postgres 一直在唠叨说 fox 不是专栏,尽管我可以做到ORDER BY fox

也许我的方法完全是胡说八道,或者有某种合并魔法可以解决问题?

0 投票
2 回答
156 浏览

linq - 使用联合的完全外连接 linq

我有两个清单

我想得到以下结果:

我怎么得到它?如何编写比较器类?

编辑:我有两个列表

现在我想要一个完整的外部连接。我怎么能得到那个?

0 投票
3 回答
222 浏览

mysql - MySQL 外连接替代

我正在开发一个游戏库存管理系统,并希望在一个表中显示所有者的补货愿望清单和每个游戏的客户购买预订计数。我写了一个我认为有效的查询,但后来我注意到它实际上忽略了任何有预订但最初不在补货愿望清单中的游戏。查询如下:

查询结果:gameID、数量、gameName、payYes、payNo

1, 4, 四季城堡, 0, 0

2, 2, 几英亩的雪, 0, 0

18, 4, 阿罕布拉, 0, 0

54, 2, 大博格, 2, 0

显然这个问题的解决方案是使用 FULL OUTER JOIN 而不是 LEFT JOIN,但 MySQL 不支持该功能。我花了几个小时试图将它翻译成一个 UNION 结构,但不能让它正常工作。这与我所得到的一样接近:

查询结果:gameID、数量、gameID、payYes、payNo

1、4、空、空、空

2、2、空、空、空

18、4、空、空、空

54, 2, 54, 2, 0

空, 空, 30, 3, 1

(对不起,我不知道如何在 StackOverflow 中很好地格式化查询表结果。)

我希望查询以我最初编写的方式显示,仅包含 ReservationsBuy 中的缺失值。请具体帮忙?

表:

示例数据:RestockWishList:

游戏ID,数量

1、4

2, 2

18, 4

54, 2

预订购买:

gameID, customerEmail, customerName, dateReserved, datePurchased, dateClaimed, prepaid

30,wonder@woman.com,戴安娜,2015-04-24 14:46:05,NULL,NULL,是的

54, boggie@marsh.com, boggie, 2015-04-24 14:43:32, NULL, NULL, 是

54, manny@second.com, manny, 2015-04-27 19:48:22, NULL, NULL, 是

43, old@mom.com, 奶奶, 2015-04-23 22:32:03, NULL, NULL, 没有

预期输出:gameID、数量、gameName、payYes、payNo

1, 4, 四季城堡, 0, 0

2, 2, 几英亩的雪, 0, 0

18, 4, 阿罕布拉, 0, 0

30, 0, 阿卡姆恐怖, 1, 0

43, 0, 香蕉图, 0, 1

54, 2, 大博格, 2, 0

(游戏表对于这个查询不是特别重要。唯一相关的是 ReservationsBuy 和 RestockWishList 都通过游戏 ID 连接到游戏)

0 投票
0 回答
191 浏览

sql-server-2005 - SQL Server:完全外连接,On 与 Where

我已经搜索过这个,似乎无法找到答案。我提前道歉,因为我确定这个答案就在那里,但我似乎找不到它。

我正在使用 SQL Server 2005 数据库,并且我知道下面的查询并不代表规范化的数据库,因为 numPlacements 字段在详细信息表和汇总表中。我没有创建数据库。

当使用 where 子句时,下面的 SQL 给出了预期的结果。预期结果是任一表中缺少匹配值或两个值不匹配的所有行。

但是,如果我注释 where 子句并取消注释 ON 子句中的最后一个 AND,它将返回超过 200k 行而不是预期的 120 个结果。

关于为什么的任何想法?

下面根据 ypercube 的建议提供更多详细信息:

我创建了 TableA 和 TableB。它们看起来像这样:

请注意,区别在于 TableA 没有 #5,TableB 没有 #1,而 #3 在两者中都有不同的 numPlacements。

以上产生的正是我所期望的:

让我们尝试添加 WHERE 子句。

通过 where,我们得到了三个预期的行:

让我们尝试添加 AND。

现在,如果我们在连接中使用上面的 AND 进行尝试,我希望得到第 3 行。相反,我得到了这个: