SQL SELECT JOIN 多表查询
SQL SELECT JOIN Query over multiple tables
我正在尝试获取有关建筑物安装的数据。问题是一个建筑物可以有多个安装,我不确定如何调整我的 sql 作为初始 table 我查询只持有拥有建筑物的关系。
这是情况。
Table 1 (RELRLGRP) 保存组的 ID 拥有建筑物的关系,这些建筑物具有我需要的数据的装置。
这是我目前所拥有的,我担心我不应该在 SQL 语句中使用这么多连接,但无法在我需要的信息之间找到更快的 link从组关系开始,直到我在 BORGINST table 中寻找安装数据。请忽略语句的 select 部分(为清楚起见将其删除)。
SELECT *
FROM RELRLGRP A
JOIN RELATION R ON A.RELATION_GC_ID = R.GC_ID
JOIN BUILDING G ON R.CODE = G.GC_CODE
JOIN INSTALL I ON G.GC_CODE = I.GC_CODE
JOIN BORGINST B ON I.GC_ID = B.GC_ID
WHERE A.RELGROUP_GC_ID LIKE '100109' (<- the group the relations belong to)
我已经完成了一些基本的 SQL 但是 link 通过 table 对我来说是新的领域,从这个意义上说,我很高兴知道是否有这么多加入语句是可行的方法,或者我是否应该完全走另一条路。
别着急:我的观点是加入人数的三倍。每个连接确实增加了复杂性并消耗了更多的处理器,但它实际上归结为性能:如果这个过程没有像您需要的那样快地完成,您可以查看其他方法,但否则像这样的多个连接就完全没问题了。
JesseJ - 由于我不知道您的 table 中存在的所有列,因此我将假设您正在加入主键。如果是这种情况,您的解决方案可能是唯一可用于 link RELRLGRP 到 BORGINST table 的解决方案。
像您这样链接多个 table 在规范化数据库中很常见。
示例:
在我发布的示例中,为了找到特定交易发生的州,您必须 link 所有 table 在一起。没有捷径。
我正在尝试获取有关建筑物安装的数据。问题是一个建筑物可以有多个安装,我不确定如何调整我的 sql 作为初始 table 我查询只持有拥有建筑物的关系。 这是情况。 Table 1 (RELRLGRP) 保存组的 ID 拥有建筑物的关系,这些建筑物具有我需要的数据的装置。
这是我目前所拥有的,我担心我不应该在 SQL 语句中使用这么多连接,但无法在我需要的信息之间找到更快的 link从组关系开始,直到我在 BORGINST table 中寻找安装数据。请忽略语句的 select 部分(为清楚起见将其删除)。
SELECT *
FROM RELRLGRP A
JOIN RELATION R ON A.RELATION_GC_ID = R.GC_ID
JOIN BUILDING G ON R.CODE = G.GC_CODE
JOIN INSTALL I ON G.GC_CODE = I.GC_CODE
JOIN BORGINST B ON I.GC_ID = B.GC_ID
WHERE A.RELGROUP_GC_ID LIKE '100109' (<- the group the relations belong to)
我已经完成了一些基本的 SQL 但是 link 通过 table 对我来说是新的领域,从这个意义上说,我很高兴知道是否有这么多加入语句是可行的方法,或者我是否应该完全走另一条路。
别着急:我的观点是加入人数的三倍。每个连接确实增加了复杂性并消耗了更多的处理器,但它实际上归结为性能:如果这个过程没有像您需要的那样快地完成,您可以查看其他方法,但否则像这样的多个连接就完全没问题了。
JesseJ - 由于我不知道您的 table 中存在的所有列,因此我将假设您正在加入主键。如果是这种情况,您的解决方案可能是唯一可用于 link RELRLGRP 到 BORGINST table 的解决方案。
像您这样链接多个 table 在规范化数据库中很常见。
示例:
在我发布的示例中,为了找到特定交易发生的州,您必须 link 所有 table 在一起。没有捷径。