からくりブログ

株式会社からくり社員のブログです

SQLの結合の基本

SQLを扱うにあたって、結合は避けては通れないものです。
 名前からして「何かと何かを結び付けるんだな」ということは恐らく誰もがわかるでしょう。では、具体的にどういう風に結び付けるのか? どういう形で結果が出てくるのか? という部分で躓いてしまう人もいるかもしれません。
 今回はそんな方の為に、結合の種類と結果がどのようになるかの一覧をお出しします。

INNER JOIN (内部結合)

ON で指定した条件が、結合する両方のテーブルにマッチするレコードのみを返します。
 [左テーブル] JOIN [右テーブル] ON [結合条件]…

LEFT (OUTER) JOIN (左外部結合)

結合の左側のテーブルの全レコードと、ON で指定した条件がマッチする右側のレコードのみを返します。
 [左テーブル] LEFT OUTHER JOIN [右テーブル] ON [結合条件]…

RIGHT (OUTER) JOIN (右外部結合)

結合の右側のテーブルの全レコードと、ON で指定した条件がマッチする左側のレコードのみを返します。
 [左テーブル] RIGHT OUTHER JOIN [右テーブル] ON [結合条件]…

FULL (OUTER) JOIN (完全外部結合)

ON で指定した条件がマッチするレコードに加えて、マッチしない左右の両方のテーブルのレコードも返します。
 [左テーブル] FULL OUTHER JOIN [右テーブル] ON [結合条件]…

CROSS JOIN (クロス結合)

ON で条件を指定せず、左右両方のテーブルの全てのコンビネーションの行を返します。
 結果で得られるレコード数は [ 左のテーブルのレコード数 ] x [ 右のテーブルのレコード数 ] になります。
 [左テーブル] CROSS JOIN [右テーブル]…
結合を用いるSQLは、以上四つのパターンでそれぞれ条件指定してデータを持ってきているだけです。
 どんなにSQL文が長くなろうと、これらの動作から外れることはありません。一つ一つの条件で取得されるデータを書き出し、或いは手元に例の様に図形を描いて考えれば、理解の大きな助けになるでしょう。
 楽をする、簡単にわかるようにする為に必要なのは、地道な作業です。頑張りましょう。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>