LoginSignup
37
27

More than 5 years have passed since last update.

INNER JOINとOUTER JOINとは?

Last updated at Posted at 2018-05-30

INNER JOINとOUTER JOINとは?

 今回はテーブル結合をするために用いるSQL文のINNERJOINOUTERJOINについて説明していきます。

INNER JOIN

INNER JOINとは、内部結合のことを指しています。

例を使って説明してきます。

まず、このようなテーブルが2つあるとします。

testGroupテーブル

id author_id title
1 1 title1
2 2 title4
3 1 title5
4 3 title3
5 3 title2
6 2 title7
7 3 title6
8 1 title8

authorIdテーブル

id title
1 title10
2 title13
3 title11
4 title9
5 title12
  • testGroupテーブルの[author_id]
  • authourIdテーブルの[id]

これらが一致しているところを結合したいとき、このようなSQL文を書きます。

SELECT * FROM testGroup
INNER JOIN authorId 
ON testGroup.author_id = authorId.id

すると結果は

id author_id title id title
1 1 title1 1 title10
3 1 title5 1 title10
8 1 title8 1 title10
2 2 title4 2 title13
6 2 title2 2 title13
4 3 title5 3 title11
5 3 title3 3 title11
7 3 title7 3 title11

このように author_id = id のところが全て表示されます。
この結果により、author_id 1番の人はtitle1,5,8,10を作ったことが分かります。

OUTER JOIN

OUTER JOINにはLEFTとRIGHTがあり、外部結合のことをさしています。

上の例を使い説明していきます。

LEFT OUTER JOIN

名前の通り左にくるテーブルに合わせて結合します。

SELECT * FROM testGroup
LEFT OUTER JOIN authorId 
ON testGroup.author_id = authorId.id

すると結果は

id author_id title id title
1 1 title1 1 title10
3 1 title5 1 title10
8 1 title8 1 title10
2 2 title4 2 title13
6 2 title2 2 title13
4 3 title5 3 title11
5 3 title3 3 title11
7 3 title7 3 title11

今回左のテーブルのauthor_idは1〜3番までであり、結合された右のテーブルのidも1〜3番まで全てあるので結果はINEER JOINと同じ結果になることが分かります。

RIGHT OUTER JOIN

さっきとは逆になり、右にくるテーブルに合わせて結合します。

SELECT * FROM testGroup
RIGHT OUTER JOIN authorId 
ON testGroup.author_id = authorId.id

すると結果は

id author_id title id title
1 1 title1 1 title10
2 2 title4 2 title13
3 1 title5 1 title10
4 3 title5 3 title11
5 3 title3 3 title11
6 2 title2 2 title13
7 3 title7 3 title11
8 1 title8 1 title10
NULL NULL NULL 4 title9
NULL NULL NULL 5 title12

今回は右のテーブルに合わせたのでid 4,5番は左のテーブルには存在しないのでNULLとはでるが表示はされていることが分かります。

また、並び順に関しても右のテーブルが基準になっていることも分かります。

まとめ

 今回はテーブル結合について説明しました。言葉で説明すると一見難しそうですが、実際にテーブルを作って実行してみれば理解が深まると思います。

 この構文は時間短縮にもなるのでぜひ活用していきたいですね。

37
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
27