logo      

メニュー
↓ SQL ↓
データ取得の基本(SELECT)

取得条件の指定(WHERE)

計算式を利用する

取得データの並べ替え
      (ORDER BY)


別名を付ける

データを集計(グループ化)する

テーブルの結合
      (INNER JOIN)


⇒テーブルの結合
      (OUTER JOIN)

テーブルの結合
      (CROSS JOIN)


重複行の排除(DISTINCT)

副問い合わせ(サブクエリ)

相関副問い合わせ
      (相関サブクエリ)


クエリの結合

文字列値を連結する

文字列の一部を取り出す

文字列を置換する

NULLを置き換える

条件によって置き換える

↓SQL Server 2012 Express↓
SQL Server 2012 Express
      インストール


SQL Server 2012 Express
      ネットワークの構成


SQL Server 2012 Express
      ログインユーザの作成


SQL Server 2012 Express
      データベースの作成


SQL Server 2012 Express
      テーブルの作成


SQL Server 2012 Express
      SQLの実行


復旧モデルとバックアップ

↓ 番外編 ↓
Windows Server 2012 評価版
      インストール


Windows Server 2012
      スタートメニュー利用方法


Windows Server 2012
      シャットダウン・再起動方法


Windows Server 2012
      サーバーマネージャ自動起動無効


Windows Server 2012
      コンピュータ名・ドメイン変更


テーブルの結合(OUTER JOIN)



SELECT文により複数のテーブルを結合してデータを取得するには、通常JOIN句を利用します。
JOIN句にはINNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, CROSSなどがありますが、
ここではOUTER JOIN(外部結合ともいいます)について記述します。
OUTER JOIN は、基準となるテーブルの全件に対し、テーブルを結合してデータを取得します。
LEFTでは左側に記述されたテーブルが基準となり、
RIGHTでは右側に記述されたテーブルが基準となります。
また、FULLの場合は、両テーブルが基準となり、両テーブルの全件が取得対象となります。
なお、一部のデータベースソフトでは、
LEFT OUTER JOIN、RIGHT OUTER JOINはWHERE句を利用して記述することもできますが、
当コンテンツでは扱いません。


文法:SELECT <テーブル名1>.<列名1>, <テーブル名2>.<列名2>…
   FROM <テーブル名1>
   [LEFT | RIGHT | FULL] <OUTER> JOIN <テーブル名2>
   ON <結合条件>
   WHERE <抽出条件>
※OUTERの記述は省略可能です


***例(LEFT OUTER JOIN)***
[社員マスタ]
所属コード 社員コード 氏名
01 001 テスト一郎
01 002 テスト二郎
02 001 テスト三郎
03 001 テスト四郎
[所属マスタ]
所属コード 所属名
01 営業部
02 企画部
04 販促部


[実行SQL]
※下記では列名、テーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
  shain.所属コード AS 所属コード1,
  shozoku.所属コード AS 所属コード2,
  shozoku.所属名,
  shain.社員コード,
  shain.氏名
FROM
  社員マスタ shain
  LEFT OUTER JOIN 所属マスタ shozoku
  ON shain.所属コード = shozoku.所属コード


[結果]
所属コード1 所属コード2 所属名 社員コード 氏名
01 01 営業部 001 テスト一郎
01 01 営業部 002 テスト二郎
02 02 企画部 001 テスト三郎
03 <NULL> <NULL> 001 テスト四郎
※<NULL>は空を意味します


***例(RIGHT OUTER JOIN)***
[社員マスタ]
所属コード 社員コード 氏名
01 001 テスト一郎
01 002 テスト二郎
02 001 テスト三郎
03 001 テスト四郎
[所属マスタ]
所属コード 所属名
01 営業部
02 企画部
04 販促部


[実行SQL]
※下記では列名、テーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
  shain.所属コード AS 所属コード1,
  shozoku.所属コード AS 所属コード2,
  shozoku.所属名,
  shain.社員コード,
  shain.氏名
FROM
  社員マスタ shain
  RIGHT OUTER JOIN 所属マスタ shozoku
  ON shain.所属コード = shozoku.所属コード


[結果]
所属コード1 所属コード2 所属名 社員コード 氏名
01 01 営業部 001 テスト一郎
01 01 営業部 002 テスト二郎
02 02 企画部 001 テスト三郎
<NULL> 04 販促部 <NULL> <NULL>
※<NULL>は空を意味します


***例(FULL OUTER JOIN)***
[社員マスタ]
所属コード 社員コード 氏名
01 001 テスト一郎
01 002 テスト二郎
02 001 テスト三郎
03 001 テスト四郎
[所属マスタ]
所属コード 所属名
01 営業部
02 企画部
04 販促部


[実行SQL]
※下記ではテーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
  shain.所属コード AS 所属コード1,
  shozoku.所属コード AS 所属コード2,
  shozoku.所属名,
  shain.社員コード,
  shain.氏名
FROM
  社員マスタ shain
  FULL OUTER JOIN 所属マスタ shozoku
  ON shain.所属コード = shozoku.所属コード


[結果]
所属コード1 所属コード2 所属名 社員コード 氏名
01 01 営業部 001 テスト一郎
01 01 営業部 002 テスト二郎
02 02 企画部 001 テスト三郎
03 <NULL> <NULL> 001 テスト四郎
<NULL> 04 販促部 <NULL> <NULL>
※<NULL>は空を意味します

<<PR>> ネットワークセキュリティを見直しませんか
価格:300円
現役SEが語るSEの仕事あれこれ-これから就職を希望する人へ-
価格:300円