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中文網其他相關文章!