【SQL初級編7】INNER JOINで内部結合を行う方法を理解しよう

SQL入門

本記事では、INNER JOINについて解説します。

前回はUNIONについて解説しました。

今回では、INNER JIONで複数のテーブルを結合させる方法についてみていきましょう。

SQLのINNER JOINとは?

INNER JOINとは、内部結合を行うもののことです。

INNER JOINを使うことで、テーブルとテーブルを結合させることができるようになります。

結合の中でも、一致しないデータは取得しないものを、内部結合と呼びます。

演習用のテーブルを作成する

最初に演習用のテーブルを作成します。

INNER JOINは複雑なので、シンプルなテーブルを使って説明します。

下記のSQL文を実行し、TEST2のデータベースにStudentテーブルを作り、データを入れてください。

○コード例

CREATE DATABASE TEST2; CREATE TABLE TEST2.Student(id int, name varchar(255), from_id int,); INSERT INTO TEST2.Student(id, name, from_id, class_id)VALUES(1,"佐藤",3,2); INSERT INTO TEST2.Student(id, name, from_id, class_id)VALUES(2,"鈴木",1,3); INSERT INTO TEST2.Student(id, name, from_id, class_id)VALUES(3,"高橋",2,4); INSERT INTO TEST2.Student(id, name, from_id, class_id)VALUES(4,"田中",4,1); 
id name from_id
1 佐藤 3
2 鈴木 1
3 高橋 2
4 田中 4

今回はもう一つテーブルを用意します。

下記のSQL文を実行し、TEST2のデータベースにFromテーブルを作り、データを入れてください。

○コード例

CREATE TABLE TEST2.From(id int, syussin varchar(255)); INSERT INTO TEST2.From(id, syussin)VALUES(1,"東京"); INSERT INTO TEST2.From(id, syussin)VALUES(2,"大阪"); INSERT INTO TEST2.From(id, syussin)VALUES(3,"北海道"); 
id syussin
1 東京
2 大阪
3 北海道

以上で演習用のテーブル作成が完了しました。

SQLのINNER JOINの使い方

INNER JOINの具体的な使い方についてみていきましょう。

次の項目に従って解説していきます。

  • INNER JOINでテーブルを結合する
  • INNER JOINを使う場合の注意点
  • INNER JOINとWHEREを組み合わせる

INNER JOINでテーブルを結合する

INNER JOINを使って、先程作成した「Studentテーブル」と「Fromテーブル」を結合させます。

INNER JOINを使う場合は、

SELECT * FROM {テーブル名} INNER JOIN {結合したいテーブル名} ON {列名A} = {列名B}

というふうに記述します。

具体的な、JOINの書き方をみていきましょう。

○コード例

SELECT * FROM TEST2.Student INNER JOIN TEST2.From ON from_id = From.id; 

○実行結果

上記のSQL文では、StudentテーブルとFromテーブルを結合させています。

「ON from_id = From.id」によって、Studentテーブルのfrom_idとFromテーブルのidを紐付けています

たとえば、Studentテーブルのid=1のレコードのfrom_idは「3」です。

この場合、Fromテーブルのidが「3」であるものと紐付けられています

その結果、Studentテーブルの右にFromテーブルが付けられているという訳です。

これが、INNER JOINの基本となります。

JOINの後に「結合させるテーブル」を指定するのと、ONの後に「テーブル同士を何で紐付けるか」を指定する必要があります。

上記のSQL文はSELECTで全部を表示させていますが、一部のカラムのみ表示させるのも可能です。

○コード例

SELECT name,syussin FROM TEST2.Student INNER JOIN TEST2.From ON from_id = From.id; 

○実行結果

上記のSQL文では、Studentテーブルのnameカラムと、Fromテーブルのsyussinテーブルのみ表示させています。

INNER JOINを使う場合の注意点

INNER JOINを使う場合の注意点を紹介します。

結合するテーブルに同じカラム名が存在する場合、カラム名をそのまま指定してはいけません。

どちらのテーブルのデータかSQLが判断できないからです。

そのため{テーブル名}.{カラム名}というように、テーブル名も指定する必要があります。

たとえば、以下のSQL文では「From.id」というように、どちらのテーブルか分かるようにしていますね。

○コード例

SELECT name,syussin FROM TEST2.Student INNER JOIN TEST2.From ON from_id = From.id; 

テーブル名を省くと、エラーが出てしまいます

○コード例

SELECT name,syussin FROM TEST2.Student INNER JOIN TEST2.From ON from_id = id; 

○実行結果

JOINを使う場合、テーブル名の指定は忘れないようにしましょう。

INNER JOINとWHEREを組み合わせる

最後にINNER JOINとWHEREの組み合わせ方を解説します。

INNER JOINでテーブルを結合させた後、結合させたテーブルに対しWHERE句で絞り込むことが可能です。

○コード例

SELECT * FROM TEST2.Student INNER JOIN TEST2.From ON from_id = From.id WHERE syussin="大阪"; 

○実行結果

READ  【SQL初級編2】UPDATEでデータベースのデータを更新しよう

上記のSQL文では、まずINNER JOINで2つのテーブルを結合しています。

その後に、WHERE句によってsyussinが大阪のデータのみを絞り込んでいます

このように、INNER JOINとWHERE句を組み合わせることも可能です。

INNER JOINはWHERE句の前に動くルールとなっています。

まとめ

本記事では、INNER JOINついて解説しました。

INNER JOINによってテーブルを結合できることが、お分かり頂けたかと思います。

INNER JOINは最初は分かりにくいですが、慣れてくれば便利なものとわかりますよ。

次回は、OUTER JOINについて解説していきます。

❤内容は役に立ちましたか?皆さまのご意見が励みになります☺
YesNo
Visited 5 times, 1 visit(s) today

コメント

タイトルとURLをコピーしました