複数の関連づけたテーブルから、条件を満たした組み合わせのみを取り出す結合を『内部結合』といいます。
内部結合を行うには、SELECT構文の中でINNER JOIN句を使います。
構文
SELECT カラム FROM テーブル1 INNER JOIN テーブル2 ON 結合条件
結合条件には様々な条件を記述できますが、最も多いのは外部キーについて
『参照する側のキー=参照される側の列』
とするものでしょう。
ではやってみましょう。
例:【subject_list】と【teacher_list】の内部結合
SQL
SELECT * FROM subject_list
INNER JOIN teacher_list ON subject_list.teacher_id = teacher_list.teacher_id;1つのSELECT文の中で複数のテーブルを使う場合、カラム名の指定は
テーブル名.カラム名
と記述します。
結果

このように、『テーブル1のある列とテーブル2のある列が等しい』ことを条件とするものを、特に『等結合』と呼びます。
内部結合は、WHERE句を用いて記述することもできます。
例:【subject_list】と【teacher_list】の内部結合をWHERE句で記述する
SQL
SELECT * FROM subject_list, teacher_list
WHERE subject_list.teacher_id = teacher_list.teacher_id;これでもまったく同じ結果が得られます。
WHERE句を使った場合は、まず直積結合をもとめ、そこから対応するカラムの値が等しいものを取り出しています。
3つ以上のテーブルを内部結合する場合
3つ以上のテーブルを内部結合する場合は、INNER JOIN句を必要な数だけ記述します。
例:【registration_list】と【subject_list】と【student_list】の内部結合
SQL
SELECT * FROM registration_list
INNER JOIN subject_list ON registration_list.subject_id = subject_list.subject_id
INNER JOIN student_list ON registration_list.student_id = student_list.student_id;結果

WHERE句で記述することもできます。
SQL
SELECT * FROM registration_list,subject_list,student_list
WHERE registration_list.subject_id=subject_list.subject_id AND
registration_list.student_id=student_list.student_id;これはINNER JOIN句を利用したものとまったく同じ結果を得ることが出来ます。
練習
【sales】と【sales_detail】と【item_list】の等結合を求めるSQLを記述しなさい。

コメント