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

sql - 从 LEFT OUTER JOIN 中删除重复项

我的问题与Restricting a LEFT JOIN非常相似,但有所不同。

假设我有一个表 SHOP 和另一个表 LOCATION。Location 是表 SHOP 的一种子表,它有两列感兴趣,一个是 Division Key(简称为 KEY)和一个“SHOP”编号。这与表 SHOP 中的数字“NO”相匹配。

我试过这个左外连接:

但我得到了很多重复,因为有很多地方属于一家商店。我想消除它们,只得到一个没有重复的“商店,钥匙”条目的列表。

数据是正确的,但重复出现如下:

我希望数据看起来像这样:

店铺表:

位置表:

(ORACLE 10g 数据库)

0 投票
2 回答
1870 浏览

sql - 如何在两个表都有 where 子句的情况下进行左外连接?

这是场景:

我有 2 张桌子:

我要返回的是以下内容:

  1. is_active 对于给定的授权密钥
  2. Single_Sign_On_User.id 匹配 external_id/API_User_id 对(如果存在)或 NULL 如果不存在这样的对

当我尝试这个查询时:

其中“test”API_User 记录存在但“test_ext_id”记录不存在,并且在任何一个表中都没有其他值,我没有返回任何记录。

当我使用:

我得到了我期望的结果(NULL,1),但是该查询不允许我找到“test_ext_id”记录(如果存在),但会给我与“test”API_User 记录关联的所有记录。

我怎样才能得到我想要的结果?

0 投票
1 回答
395 浏览

outer-join - 左外连接 - SQL2005

我以为我知道足够多的 SQL,但我遇到了左外连接的问题。

我有一个费用明细记录,需要通过部门和帐户代码链接到表。

查询看起来像这样:

只要有与连接条件完全匹配的记录,这就会很好。但有时,没有匹配的预算项目。我想从详细信息表中取回 Detail.Spend,其中budgetAmt 为空。相反,我根本没有得到这个记录。

当没有匹配时,Left Outer Join 不应该返回左(详细)表吗?当我在这里使用多个标准时有什么不同吗?

谢谢

0 投票
1 回答
115 浏览

mysql - 如何加入这些查询?

查询1:

查询2:

查询3:

本质上,我不确定正确加入这些的语法。我编写了一个简单地连接它们的查询,但如果论坛缓存表包含未经批准的论坛 id,它根本不会返回整行。

我真正需要的是 query1 和 query2 在类别 id 上左连接,查询 3 在 id = catID 上左外连接。

0 投票
2 回答
747 浏览

sql - SQL : where vs. on in join

也许是一个愚蠢的问题,但请考虑以下两张表:

为什么这个 INNER JOIN 给了我想要的结果(过滤 ON 子句中的 [year]):

为什么 LEFT OUTER JOIN 包括 2010 年的记录?

而且我必须在“WHERE”子句中编写 [year] 过滤器:

就像我说的,也许是一个愚蠢的问题,但它困扰着我!

0 投票
1 回答
157 浏览

sql - SQL:从连接中收集右手值

假设一个问题有很多标签,通过一个称为标签的连接表。我这样加入:

我想根据特定标签名称(例如“钢琴”)对结果进行排序,以便钢琴位于顶部,然后按字母顺序排列所有其他标签。目前我正在使用这个订单条款:

这是完全错误的——我得到的第一个结果甚至根本没有标记为“钢琴”。我认为我的问题是我需要以某种方式对标签名称进行分组并对此进行排序测试:我认为由于生成的连接表的结构,对直接 tags.name 执行此操作不起作用(它确实有效如果我只是在标签表上做一个简单的选择),但我不知道如何修复它。

感谢任何建议,最大

编辑 - 回复 Marcelo re COALESCE 非常感谢 Marcelo - 我以前没见过这个。必须更正确地阅读api。这确实有帮助,但前提是我也选择了 coalese 子句。即,这个:

仍然给出虚假的结果。然而,这:

返回正确的结果。不过,我仍然想选择问题 ID。反正越来越近了……

0 投票
2 回答
6795 浏览

php - 多个左连接,如何在php中输出

我有 3 张桌子需要加入。合同表是主表,“工作”和“公司”表是可以与合同表关联的额外信息。

所以,因为我想要我的“合同”表中的所有条目,并且只有“工作”和“公司”数据存在,所以我写了这样的查询......

现在我将如何在 PHP 中输​​出它?我试过这个,但一直收到一个未定义的错误“注意:未定义的索引:contracts.id”......

任何帮助表示赞赏。

0 投票
4 回答
4596 浏览

sql - 父子链的外连接

考虑下表和关系:

父母 --1:Many-- 孩子 --1:Many-- 子孩子

  • 父母可能有或许多没有儿童记录。
  • 孩子总是有子记录。

我想编写一个查询来选择与 parent.name、children.name 或 subchildren.name 匹配的任何父名称。

在这里,我知道我必须在父母和孩子之间进行左外连接。但是我应该在孩子和子孩子之间加入什么样的连接?

0 投票
3 回答
2720 浏览

sql - sybase - 一个表中的值不在另一个表上,位于 3 表连接的两端

假设情况:我在一家定制标牌制作公司工作,我们的一些客户提交的标牌设计数量超过了他们目前使用的数量。我想知道哪些标志从未使用过。

涉及3张表:

表 A - 公司标志

sign_pk(唯一) | 公司_pk | sign_description
1 --------------------1 ---------------- 小
2 --------- -----------1 ---------------- 大
3 -------- 2 ---------------- 中等
4 --------------------------------2 ---------- ------ jumbo
5 --------------------------------3 ---------------- 横幅

表 B - 公司位置

公司_pk | 公司位置(唯一)
1 ---|------ 987
1 ------|------ 876
2 -----|------ 456
2 ------|-------- 123

表 C - 位置标志(有点牵强,但每行可以有 2 个标志,从公司位置到位置标志是一对多的关系)

公司位置 | front_sign | back_sign
987 ------------ 1 ------------ 2
987 ------------ 2 -------- ---- 1
876 ------------ 2 ------------ 1
456 ------------ 3 ---- -------- 4
123 ------------ 4 ------------ 3

因此,a.company_pk = b.company_pk 和 b.company_location = c.company_location。我想尝试查找的是如何查询并取回 sign_pk 5 不在任何位置。针对所有 front_sign 和 back_sign 值查询每个 sign_pk 有点不切实际,因为所有表都有数百万行。表 a 在 sign_pk 和 company_pk 上建立索引,表 b 在两个字段上都有索引,而表 c 仅在公司位置上建立索引。我试图写它的方式是“每个标志都属于一家公司,所以在属于与该标志相关的公司的任何位置找到不是正面或背面标志的标志。”

我原来的计划是:
Select a.sign_pk
from a, b, c
where a.company_pk = b.company_pk
and b.company_location = c.company_location
and a.sign_pk *= c.front_sign
group by a.sign_pk having count(c.front_sign) = 0

只是做前面的标志,然后在后面重复,但这不会运行,因为 c 是外部连接的内部成员,也是内部连接的成员。

整个事情相当复杂,但如果有人能理解它,我会成为你最好的朋友。

0 投票
7 回答
26692 浏览

sql - 有哪些使用 SQL 的 OUTER JOIN 的好例子?

我经常在面试中被问到“什么是 SQL 中的外连接”?

虽然可以回答,但我想知道使用(LEFT)OUTER JOIN 的一些经典和好的现实生活示例是什么?