通过 SQL 内连接有效组合多个表中的数据:子查询方法
本文解决了一个常见的 SQL 挑战:根据匹配的列值从多个表中检索数据。 具体场景包括从 tbl_facilitators
和 tbl_facilitatorClasses
中提取数据,旨在以结构化格式显示班级名称以及主要和次要辅导员的名字和姓氏。
最初证明简单的内部联接不足以同时检索主要和次要促进者详细信息。
利用子查询优化联接操作
由@philipxy 提出的解决方案,优雅地采用子查询来简化连接过程。让我们逐步检查一下精炼查询:
别名 tbl_facilitatorClasses
<code class="language-sql">(tbl_facilitatorClasses AS tblCLS</code>
为了简洁和清晰,这会将别名 tblCLS
分配给 tbl_facilitatorClasses
。
与tblCLS
(主要协调人)一起加入tbl_facilitators
<code class="language-sql">INNER JOIN tbl_facilitators AS tblP ON tblCLS.primeFacil = tblP.facilID)</code>
此子查询使用 tblCLS
作为匹配键连接 tbl_facilitators
和 tblP
(别名为 primeFacil
),生成包含类名和主要促进者信息的中间结果集。
使用 tbl_facilitators
(辅助协调员)连接子查询
<code class="language-sql">INNER JOIN tbl_facilitators AS tblS ON tblCLS.secondFacil = tblS.facilID;</code>
最终的内连接将前面的子查询的输出与 tbl_facilitators
(别名为 tblS
)合并,并使用 secondFacil
进行匹配。 这会产生完整的数据集,包括主要和次要促进者数据以及班级名称。
使用 SELECT
语句选择数据
然后使用 SELECT
语句检索所需的列:
<code class="language-sql">SELECT tblCLS.className, tblP.facilLname, tblP.facilFname, tblS.facilLname, tblS.facilFname</code>
通过在子查询周围使用括号,MS Access 可以正确排序操作,确保按预期顺序执行连接。这种方法有效地检索所需的数据,产生所需的输出。
以上是子查询如何改进 SQL 内部联接以组合多个表中的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!