首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL Server 多表關聯查詢:透過中間表關聯學生與課程資料

     編輯:程式設計綜合問答

問題場景

在資料庫設計中,常遇到多對多關係,需要透過中間表(關聯表)來連結兩張主表。例如:學生基本資料表 T_student(uid, uname...)、課程基本資料表 T_BASE_INFO(tid, tname, ttype),以及中間表 T_MID(id, uid, tid) 以外鍵關聯雙方。

需求

欲透過中間表的 tid 找到對應的學生姓名 uname、課程名稱 tname 及類型 ttype,僅需一條 SQL 語句即可完成。

解決方案:使用 INNER JOIN 串聯三張表

利用 INNER JOIN 依序連結學生表、中間表、課程表,並指定關聯欄位:

SELECT s.uname, b.tname, b.ttype
FROM T_student s
INNER JOIN T_MID m ON s.uid = m.uid
INNER JOIN T_BASE_INFO b ON b.tid = m.tid;

語法說明

  • INNER JOIN:只回傳兩張表中關聯欄位皆符合的資料列。
  • ON 子句:指定關聯條件,此處為外鍵對應的主鍵。
  • 別名 s、m、b 簡化欄位引用,提升可讀性。

延伸應用

若需顯示所有學生(含未選課者),可改用 LEFT JOIN;若需統計每門課程的選課人數,可加入 GROUP BY b.tid 並搭配 COUNT(*)。

總結

掌握多表 JOIN 技巧,能高效處理複雜關聯查詢,是 SQL 開發的核心技能之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved