SQL:使用 INNER JOIN 组合多个表中的数据
SQL 的 INNER JOIN
是一个强大的工具,用于根据共享值组合来自不同表的信息。 这在处理相关数据集时特别有用,如本示例所示,涉及学生信息、大厅偏好和大厅名称。
想象三张表:一张保存学生详细信息,另一张保存学生宿舍偏好(以 ID 表示),第三张保存与这些 ID 对应的宿舍名称。为了在实际的大厅名称旁边显示学生信息,我们将使用 INNER JOIN
.
以下是如何有效INNER JOIN
这三个表:
<code class="language-sql">SELECT s.StudentID, s.FName, s.LName, s.Gender, s.BirthDate, s.Email, r.HallPref1, r.HallPref2, r.HallPref3, h.HallName FROM dbo.StudentSignUp AS s INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r ON s.StudentID = r.StudentID INNER JOIN HallData.dbo.Halls AS h ON r.HallPref1 = h.HallID;</code>
此查询的工作原理如下:
INNER JOIN
使用 StudentSignUp
作为公共密钥连接 Incoming_Applications_Current
和 StudentID
。INNER JOIN
使用 Incoming_Applications_Current
(来自首选项表)和 Halls
(来自大厅表)链接 HallPref1
和 HallID
。结果将显示学生信息以及他们的第一个大厅偏好及其相应的名称,例如:
<code>John Doe | 923423 | Incoming Student | Foley Hall</code>
扩展多个大厅首选项的查询:
要检索所有三个大厅首选项及其名称,我们可以使用附加的 INNER JOIN
来扩展查询:
<code class="language-sql">SELECT s.StudentID, s.FName, s.LName, s.Gender, s.BirthDate, s.Email, r.HallPref1, h1.HallName AS Pref1HallName, r.HallPref2, h2.HallName AS Pref2HallName, r.HallPref3, h3.HallName AS Pref3HallName FROM dbo.StudentSignUp AS s INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r ON s.StudentID = r.StudentID INNER JOIN HallData.dbo.Halls AS h1 ON r.HallPref1 = h1.HallID INNER JOIN HallData.dbo.Halls AS h2 ON r.HallPref2 = h2.HallID INNER JOIN HallData.dbo.Halls AS h3 ON r.HallPref3 = h3.HallID;</code>
此增强型查询将 Halls
表连接三次,每个偏好列一次,提供学生宿舍偏好及其关联名称的完整视图。
以上是如何在SQL中高效INNER JOIN三个表来检索学生信息和大厅名称?的详细内容。更多信息请关注PHP中文网其他相关文章!