在資料庫設計中,常遇到多對多關係,需要透過中間表(關聯表)來連結兩張主表。例如:學生基本資料表 T_student(uid, uname...)、課程基本資料表 T_BASE_INFO(tid, tname, ttype),以及中間表 T_MID(id, uid, tid) 以外鍵關聯雙方。
欲透過中間表的 tid 找到對應的學生姓名 uname、課程名稱 tname 及類型 ttype,僅需一條 SQL 語句即可完成。
利用 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 開發的核心技能之一。