SQLのJOIN文を視覚的に理解する

SPONSORED LINK

Pocket

SQLの「LEFT JOIN」やら「INNER JOIN」ってなんじゃろ?という方にとっても参考になりそうなサイトのご紹介。それぞれの命令をベン図で良い感じに表現しちゃっていますよ。とってもわかりやすいです。

Table AとTable Bが「name」というフィールドでつながっているという設定です。

  • INNER JOIN
  • まずはINNER JOIN。共通部分だけとってきます。

    SELECT * FROM TableA
    INNER JOIN TableB
    ON TableA.name = TableB.name
    

    図だとこんな感じ。

  • FULL OUTER JOIN
  • 次に重複部分はひとつだけにして、あと全部。

    SELECT * FROM TableA
    FULL OUTER JOIN TableB
    ON TableA.name = TableB.name
    

    図だとこんな感じね。

  • LEFT OUTER JOIN
  • 左側だけいっときます。

    SELECT * FROM TableA
    LEFT OUTER JOIN TableB
    ON TableA.name = TableB.name
    

    図。

  • 片方だけ
  • 上のから共通部分だけ除きます。

    SELECT * FROM TableA
    LEFT OUTER JOIN TableB
    ON TableA.name = TableB.name
    WHERE TableB.id IS null
    

    図ね。

  • 共通部分を除く
  • 次に全体から共通部分を除くにはこうします。

    SELECT * FROM TableA
    FULL OUTER JOIN TableB
    ON TableA.name = TableB.name
    WHERE TableA.id IS null 
    OR TableB.id IS null
    

    図でいうとこんな感じ。

  • CROSS JOIN
  • これは図にできないのですが、重複しているものも含めて全部とってくる命令です。

    SELECT * FROM TableA
    CROSS JOIN TableB
    

いかがですかね。JOIN文を書くときには参考にしてみたいですね。なお、サンプルデータで抽出結果がどうなるかを知りたい方は元サイトをどうぞ。

» Coding Horror: A Visual Explanation of SQL Joins

ツイッターもやっています!

SPONSORED LINK

    • HIGOKENI
    • October 24th, 2012

    ありがとう!!めっちゃ助かった

  1. No trackbacks yet.