首頁 >資料庫 >mysql教程 >如何在SQL中高效INNER JOIN三個表格來檢索學生資訊和大廳名稱?

如何在SQL中高效INNER JOIN三個表格來檢索學生資訊和大廳名稱?

Patricia Arquette
Patricia Arquette原創
2025-01-15 22:23:43244瀏覽

How to Efficiently INNER JOIN Three Tables in SQL to Retrieve Student Information and Hall Names?

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>

此查詢的工作原理如下:

  1. 第一個 INNER JOIN 使用 StudentSignUp 作為公用金鑰連接 Incoming_Applications_CurrentStudentID
  2. 第二個 INNER JOIN 使用 Incoming_Applications_Current(來自首選項表)和 Halls(來自大廳表)連結 HallPref1HallID

結果將顯示學生資訊以及他們的第一個大廳偏好及其相應的名稱,例如:

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn