问题标签 [inner-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 回答
854 浏览

c# - LINQ:在 linq 中使用数据透视表

任何人都可以帮忙吗?

我有以下使用关联的结构,如您所见,v.StructureType.Description 作为 1 对 1 关联非常有效,但我需要在下面的示例中获取 v.StructureGroup.StructureGroupTariffs.Tariff.Price 但 StructureGroupTariffs 是数据透视表将结构组和关税相互链接,因此它是多对多的,所以它返回一个实体集,我现在明白这个问题,但我不确定如何解决它

所以了解我的 structureGroupTariffs 是我的支点(链接表),我必须传入

然后这给了我 1 比 1...所以我想我可以使用 StructureGroupTariffs.Tariff.Price ??? 因为这将在 StructureGroup 和 Tariff 之间返回 1 比 1

我有点困惑,非常感谢一些帮助。

我现在了解这个问题,但不确定如何解决它。

0 投票
3 回答
5518 浏览

sql - postgreSQL 内连接

我有sql查询

它返回错误列 Roles.role 不存在

询问

返回错误缺少表“角色”的 FROM 子句条目

我怎么解决这个问题?我不再使用 ms sql

0 投票
6 回答
1937 浏览

sql - 如何强制 SQL Server 2005 在 where 之前运行连接?

我有一个 SQL 查询,它将定价表连接到包含用户提供的答案的表。我的查询用于根据输入的数量获取价格。下面是我的 SQL 语句:

问题是 SQL Server 在 JOIN 之前运行 where 子句并抛出错误:

将 varchar 值“TEST”转换为数据类型 int 时转换失败。

因为它在连接之前进行了最小和最大比较('TEST' 是 JobQuestion 表中用户输入的有效值,但不应在 JobQuestion 连接到 Price 时返回)。我相信 SQL Server 选择运行 WHERE 是因为由于某种原因解析器认为这将是一个更有效的查询。如果我只是跑

我得到了这些结果:

因此,添加 WHERE 应该过滤掉最后两个并只返回第一条记录。如何强制 SQL 先运行 JOIN 或使用另一种技术过滤掉我需要的记录?

0 投票
1 回答
107 浏览

linq - 帮助 linq 加入

我在 linq 中有以下表达式(它是一个连接),我选择了“J”,因为我需要稍后使用 J(目前我只是选择 J,但是一旦我有了这个修复,我计划在之后的另一个子查询中使用 J)

但它不会让我提供使用“V”端的位置,因此 v.IdOFFice 无效。我试过交换连接,发生了什么我不能使用“GVT”..

通过指定它完美工作的位置,但我需要指定 2 个表中存在的 2 个位置......因此 IdOffice 和 IdTariff 都在自己的表中......它们不是两者......

可能有些愚蠢,似乎连接后指定的表我无法在哪里使用?

有任何想法吗?

谢谢

这基本上是我想要实现的

基本上,我最终得到了 1 条带有 Id 的记录和一个包含尽可能多关税的字段 - 如果这有意义吗?

}

查询工作得很好,

能够像这样使用扩展方法(c#)会很好......这可能吗,所以我可以动态设置关税......所以例如我进行查询并且我有一个扩展方法(我已经使用过在简单的查询)像这样

这使它非常可扩展?如果它是正常的,我可以在哪里执行此操作,但查询不在 where

谢谢你。

0 投票
1 回答
829 浏览

c# - LINQ;强制一个新的 {} 返回 Iqueryable?

我写了一个小查询,在 Linqpad 中运行良好,但是(见下文)关税不作为 Iqueryable 返回,有谁知道如何解决这个问题?

基本上看关税=新......,

我确实尝试过,但它无效,因为 gvt 不是表格或其他东西?

当然 gvt 只包含我想要的值,因为它有内部连接......

我可以直接从我的 MyTariffs 中提取(它可以返回 Iqueryable)但是我有太多信息,因为它没有考虑到我在 gvt 中所做的加入?

0 投票
1 回答
1843 浏览

sql - 什么时候使用内连接,什么时候使用子查询?

内连接和子查询有什么区别?我什么时候应该使用子查询?还是内部连接?我最近遇到了一个内部连接太慢的情况,子查询是解决方案。根据我有限的理解,我认为两者的工作方式完全相同。

0 投票
2 回答
206 浏览

mysql - 加入以提供具有可选关系列的列表

表:

给定 auserid和 a setid,我们需要生成集合中所有项目的列表,以及用户与每个项目的关系(如果存在关系)。即结果将

以下不起作用,因为第二个where子句消除了relationship为空的行:

但是,第二个where子句会删除该项目与给定用户之间不存在关系的行。如何通过单个查询来完成?

0 投票
16 回答
46115 浏览

sql - SQL:内部连接两个海量表

我有两个巨大的表,每个表大约有 1 亿条记录,恐怕我需要在两者之间执行内部联接。现在,两张表都非常简单;这是描述:

生物实体表:

  • BioEntityId (int)
  • 名称(nvarchar 4000,虽然这是一个矫枉过正)
  • 类型 ID (int)

EGM 表(一个辅助表,实际上是批量导入操作的结果):

  • EMGId (int)
  • PID(整数)
  • 名称(nvarchar 4000,虽然这是一个矫枉过正)
  • 类型 ID (int)
  • LastModified(日期)

我需要获得一个匹配的名称,以便将 BioEntityId 与 EGM 表中的 PId 相关联。最初,我尝试使用单个内部连接来完成所有操作,但查询似乎花费的时间太长,并且数据库的日志文件(在简单恢复模式下)设法耗尽了所有可用的磁盘空间(刚刚超过 200 GB,当数据库占用18GB时),如果我没记错的话,等待两天后查询会失败。我设法阻止日志增长(现在只有 33 MB),但是查询已经连续运行了 6 天,而且看起来不会很快停止。

我在一台相当不错的计算机(4GB RAM,Core 2 Duo (E8400) 3GHz,Windows Server 2008,SQL Server 2008)上运行它,我注意到计算机每隔 30 秒(给予或接受)偶尔会卡顿一段时间几秒钟。这使得它很难用于其他任何事情,这真的让我很紧张。

现在,这是查询:

我手动设置了一些索引;EGM 和 BioEntity 都有一个包含 TypeId 和 Name 的非聚集覆盖索引。但是,查询运行了 5 天,也没有结束,所以我尝试运行 Database Tuning Advisor 以使其正常工作。它建议删除我的旧索引并创建统计信息和两个聚集索引(每个表上一个,只包含我觉得很奇怪的 TypeId - 或者只是简单的愚蠢 - 但我还是试了一下)。

它已经运行了 6 天,我仍然不知道该怎么办......有什么想法吗?我怎样才能使它更快(或者,至少,有限)?

更新: -好的,我已取消查询并重新启动服务器以使操作系统重新启动并运行-我正在使用您提出的更改重新运行工作流,特别是将 nvarchar 字段裁剪为更小的大小并交换“like”对于“=”。这至少需要两个小时,所以我稍后会发布更多更新

更新 2(格林威治标准时间下午 1 点,2009 年 11 月 18 日): - 估计的执行计划显示表扫描的成本为 67%,然后是 33% 的哈希匹配。接下来是 0% 并行度(这不是很奇怪吗?这是我第一次使用估计的执行计划,但这个特别的事实让我大吃一惊),0% 哈希匹配,更多 0% 并行度,0% 顶部,0 % 表插入,最后是另一个 0% 选择。似乎索引是垃圾,正如预期的那样,所以我将制作手动索引并丢弃蹩脚的建议索引。

0 投票
4 回答
14808 浏览

mysql - 带有 2 个 ON 子句的 MYSQL 内连接

我正在尝试设置一个简单的数据库,其中有一个用户并存储他们的居住地址和邮政地址。我有 2 张桌子

用户

地址

我正在尝试进行内部连接,所以我最终得到了一个看起来像的结果集。

id - 名称 - 住宅街道 - 住宅郊区、邮政街道、邮政郊区

我不断收到地址详细信息的空结果,我认为这是因为我从地址表中获取了两组数据并且存在冲突。是否可以同时返回与住宅 ID 和邮政 ID 关联的地址字段?

我的 SQL 语法是

编辑。正如已经指出的那样,我的数据库设计相当糟糕,我正在寻求改进它。我想要实现的关键是我可以存储一个人的详细信息以及他们相关的住宅和邮政地址。我永远不会寻求扩展数据库以包含例如工作地址,因此希望能够降低表格的复杂性。

0 投票
3 回答
1128 浏览

sql-server - SQL Server:设计:嵌入式 Select 语句还是 INNER JOIN?

我有以下表结构 -

站点:站点主表

组织:组织的主表

用户:用户的主表(每个用户通过 User.OrgId 链接到唯一的组织)

OrgSite:存储一些“特定于组织”的站点详细信息(OrgId、SiteId、SiteName、SiteCode)。不是所有的网站,只有那些可以被 Org 访问的网站。

UserSite:将用户链接到其可访问的站点(UserId、SiteId)。当用户链接到 Org 时,UserSite 将是 OrgSite 表的子集。

ItemSite:存储一些项目和站点特定详细信息的表(ItemID、SiteId、OrgId,...)

现在,我必须从“ItemSite”过滤\显示记录,并且我还需要显示 Sitecode。所以,我看到以下两个选项 -

1. 创建一个视图: vw_ItemSite_UserSite_OrgSite(INNER JOIN 上 SiteId 上的所有表) - 这将使我能够访问“OrgSite”表中可用的所有组织特定详细信息(即 SiteCode 等)。

如果您注意到我必须在视图中包含“OrgSite”,只是因为我想要特定于 Org 的 SiteCode 和 SiteName。因为 UserSite 已经在过滤站点 - 所以我可以“排除” OrgSite 表并消除不必要的 INNER JOIN。

2. 基于上述说明 - 第二个选项是创建一个 VIEW: vw_ItemSite_UserSite 并在 VIEW 的 'SELECT' 语句中我可以嵌入以下 SELECT 像 -


我唯一的意图是 - 我相信 INNER JOIN 和 WHERE 将在评估嵌入式 select 语句之前进行评估。那么,这是否可以节省一些性能?或者拥有 vw_ItemSite_UserSite_OrgSite 的想法更好。

选项#1 还是选项#2?

谢谢你。