LoginSignup
13
15

More than 5 years have passed since last update.

外部結合について解説

Posted at

簡単にいうと

  • 内部結合(Inner Join)の対義語
  • 基準となるテーブルにデータがあれば、もう一方のテーブルになくても取り出す

右外部結合と左外部結合の違いは?

基準がどちらになるかの違いがあるだけです。

  • 右外部結合は右のテーブルを基準にして結合
  • 左外部結合は左のテーブルを基準にして結合

SQL文はどうなっているのか?

SELECT カラム名1, カラム名2, ...,FROM 左に当たるテーブル
LEFT(RIGHT) OUTER JOIN 右に当たるテーブル ON 結合の条件

左とか右がややこしいですが、

  • 最初にSELECT文で取ってきたテーブルが左
  • JOINのところで取ってるテーブルが右

に該当すると覚えておくといいでしょう。


それでは左(右)外部結合に関して詳しくみていきます。

左外部結合について解説

image.png

image.png

こんなテーブルがあったとします。
authorsテーブルをbooksテーブルに左外部結合します。

SELECT * FROM books
LEFT OUTER JOIN authors ON books.author_id = authors.id

こう書くと、

  • booksテーブルが左
  • authorsテーブルが右
  • 左を基準にして結合

という意味になります。

image.png

左外部結合後のテーブルを見てみると、

  • booksテーブルのレコードは全て残っている
  • 該当するbookがなかったauthorは削除されている
  • 該当するauthorがいなかったbookに結合したレコードは値がnilになる(オレンジ色で色付けしているセル)

ってことがわかると思います。

右外部結合について解説

SELECT * FROM books
RIGHT OUTER JOIN authors ON books.author_id = authors.id

次は右(authorsテーブル)を基準に外部結合していきます。

image.png

これは左外部結合が理解できていれば、問題ないですね。
気をつける点は、テーブルのレコードの並びがauthorテーブルを基準にしているところくらいでしょう。

参考にさせていただいたサイト

SQL素人でも分かるテーブル結合(inner joinとouter join)

13
15
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
13
15