ホームページ >データベース >mysql チュートリアル >SQL で 3 つのテーブルを効率的に INNER JOIN して学生情報とホール名を取得する方法
SQL: INNER JOIN を使用して複数のテーブルのデータを結合する
SQL の INNER JOIN
は、共有値に基づいてさまざまなテーブルの情報を結合するための強力なツールです。 これは、学生情報、ホールの好み、ホール名を含むこの例で示されているように、関連するデータセットを扱うときに特に役立ちます。
3 つのテーブルを想像してください。1 つは学生の詳細を保持し、もう 1 つは学生ホールの好み (ID として表されます) を保持し、3 番目のテーブルはそれらの ID に対応するホール名を保持します。実際のホール名と並んで学生情報を表示するには、INNER JOIN
を使用します。
これら 3 つのテーブルを効率的に 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>
複数のホール設定のクエリの拡張:
3 つのホール設定とその名前をすべて取得するには、追加の 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
テーブルを 3 回 (プリファレンス列ごとに 1 回ずつ) 結合し、学生ホールのプリファレンスとそれに関連付けられた名前の完全なビューを提供します。
以上がSQL で 3 つのテーブルを効率的に INNER JOIN して学生情報とホール名を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。