2007年7月29日日曜日

 

【SQL】内部結合・外部結合 - JOIN

内部結合 - INNER JOIN

二つの表(テーブル)を、あるキーとなる列(カラム)の値に注目して結合する。
例えば、二つの表で同じ識別IDを持つものを組み合わせた表を作る。

表1
番号ジャンル作家
1ミステリ東野圭吾
2ミステリ・時代小説宮部みゆき
恋愛小説江國香織
4恋愛小説辻仁成
表2
番号作家作品
1東野圭吾容疑者Xの献身
2京極夏彦姑獲鳥の夏
3宮部みゆき模倣犯
4宮部みゆきあかんべえ
5江國香織東京タワー

作家」をキーとして結合する。結合するものがないデータは抽出されない。
おそらく、表1から1行ずつ表2の全ての行をチェックしているのかと。総当り。 違ったらスイマセン。

表:内部結合結果
番号ジャンル作家番号作品
1ミステリ東野圭吾1容疑者Xの献身
2ミステリ・時代小説宮部みゆき2模倣犯
2ミステリ・時代小説宮部みゆき3あかんべえ
3恋愛小説江國香織4東京タワー
SQL文
SELECT * FROM 表1  JOIN 表2 ON 表1.作家 = 表2.作家

外部結合 - OUTER JOIN

一つの表にもう一つの表を組み込んで結合。

左外部結合
例で言うと、表1に条件を満たすキーを持つ表2のデータをくっ付ける。結合するデータがなければNULLが入る。
表:左外部結合結果
番号ジャンル作家番号作品
1ミステリ東野圭吾1容疑者Xの献身
2ミステリ・時代小説宮部みゆき2模倣犯
2ミステリ・時代小説宮部みゆき3あかんべえ
3恋愛小説江國香織4東京タワー
4恋愛小説NULLNULLNULL
SQL文
SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 表1.作家 = 表2.作家
右外部結合 - RIGHT OUTER JOIN
例で言うと、表2に条件を満たすキーを持つ表1のデータをくっ付ける。結合するデータがなければNULLが入る。
表:右外部結合結果
番号作家作品番号ジャンル
1東野圭吾容疑者Xの献身1ミステリ
2NULL姑獲鳥の夏NULLNULL
3宮部みゆき模倣犯2ミステリ・時代小説
4宮部みゆきあかんべえ2ミステリ・時代小説
5江國香織東京タワー4恋愛小説
SQL文
SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.作家 = 表2.作家

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google