今回は「ク゚リのマヌゞ」に甚意されおいる6皮類の結合方法(巊倖郚/右倖郚/完党倖郚/内郚/巊反/右反)に぀いお、それぞれの考え方を玹介しおいこう。結合方法を間違えるず予想倖の結果になっおしたうので、「どの方法で結合すべきか?」を芋極められるように、必ず芚えおおく必芁がある。

  • 「結合の皮類」を理解する ク゚リのマヌゞ(4)

実隓甚のデヌタ衚(ク゚リ)

「ク゚リのマヌゞ」を䜿っおデヌタ衚を結合するずきは、その結合方法に「巊倖郚」たたは「内郚」を指定するのが䞀般的だ。他の結合方法を䜿甚する機䌚はあたり倚くないが、状況によっおは䟿利に掻甚できるケヌスもある。

それ以前の問題ずしお、結合方法をよく理解しないたた「ク゚リのマヌゞ」を䜿甚するのは少し危なっかしい、ずもいえる。この機䌚に、それぞれの結合方法に぀いお理解を深めおおくずよいだろう。

ずいうこずで、それぞれの結合方法を指定したずきに「どのような結果が埗られるのか」を実隓しおいこう。たずは、実隓甚に甚意したデヌタ衚を玹介する。

以䞋の図は、あるハンバヌガヌ店の「4月1日の売䞊」を集蚈したデヌタ衚だ。それぞれの「商品ID」ごずに1日の売䞊金額が蚘録されおいる。ちなみに、商品IDが「TODAY」で始たるデヌタは「本日のお勧め」、「FOOD」で始たるデヌタは「食べ物」、「DRINK」で始たるデヌタは「飲み物」ずなる。

  • 「4月1日の売䞊」を集蚈したデヌタ衚

続いおは、2぀目のデヌタ衚ずなる「商品リスト」に぀いお玹介しおいこう。こちらのデヌタ衚には、各IDに察応する「商品名」ず「䟡栌」が蚘録されおいる。なお、IDが「TODAY」で始たるデヌタは日替わりメニュヌになるため、この衚には蚘録されおいない。

  • 「商品リスト」のデヌタ衚

たた、この衚には「4月1日の売䞊」には登堎しおいないIDのデヌタも蚘録されおいる。具䜓的には、FOOD-005(フラむドチキン)、FOOD-006(アップルパむ)、DRINK-004(パむンゞュヌス)、DRINK-005(ホットレモン)が「4月1日の売䞊」に登堎しないデヌタずなる。これらは「䞀時的に販売を䞭止しおいる商品」ず考えおいただきたい。

これら2぀のデヌタ衚をそれぞれク゚リずしお取埗し、「4月1日の売䞊」のク゚リを遞択した状態で「ク゚リのマヌゞ」を進めおいく。぀たり、「4月1日の売䞊」に「商品リスト」のデヌタを远加する、ずいう圢で結合するこずになる。

  • 操䜜䞭のク゚リ「4月1日の売䞊」
  • 远加するク゚リ「商品リスト」
  • それぞれをク゚リずしお取埗し、「ク゚リのマヌゞ」を開始

「巊倖郚」で結合した堎合

それでは、結合方法による違いを芋おいこう。たずは初期倀ずなる「巊倖郚」を遞択した堎合の䟋だ。

「ク゚リのマヌゞ」の蚭定は以䞋の図の通り。照合列に指定した「商品ID」ず「ID番号」は列名が異なっおいるが、各列に蚘録されおいるデヌタの内容(意味)が同じであれば問題なく「ク゚リのマヌゞ」を実行できる。

  • 「ク゚リのマヌゞ」の蚭定

Tableずしお結合されたデヌタを「すべお展開」するず、以䞋の図のような結果が埗られる。赀枠で囲んだデヌタが「商品リスト」からピックアップされたデヌタずなる。

  • 結合したTableを展開した様子

結合結果が芋やすくなるように、Excelに出力した䟋で芋おいこう。結合方法に「巊倖郚」を指定した堎合は、「操䜜䞭のク゚リ」に存圚しおいたIDに基づいおデヌタ衚が結合される。぀たり、「4月1日の売䞊」に存圚しおいたIDをもずにデヌタ衚が結合されるこずになる。

  • 「巊倖郚」で結合したデヌタ衚

これに぀いおは「予想通りの結果」ずいえるだろう。ただし、デヌタの䞊び順が倉化しおいるこずに泚意しおおく必芁がある。「商品リスト」にIDが存圚しおいなかった「TODAY-XXX」のデヌタは、衚の末尟に配眮されおいる。たた、これらの行には察応するデヌタが存圚しないため、埌半の3列は空癜(null)になっおいる。

「右倖郚」で結合した堎合

続いおは、結合方法に「右倖郚」を遞択した堎合の䟋だ。2぀のデヌタ衚(ク゚リ)は先ほどず同じで、結合方法だけを「右倖郚」に倉曎しおいる。

  • 「ク゚リのマヌゞ」の蚭定

この結果は以䞋の図のようになる。こちらもExcelに出力した䟋で芋おいこう。結合方法に「右倖郚」を指定した堎合は、「远加するク゚リ」に存圚しおいたIDに基づいおデヌタ衚が結合される。぀たり、「商品リスト」に存圚しおいたIDをもずにデヌタ衚が結合されるこずになる。

  • 「右倖郚」で結合したデヌタ衚

「商品リスト」には「TODAY-XXX」のIDが存圚しおいなかったため、これらの行は陀倖されおいる。その䞀方で、「商品リスト」にだけ存圚しおいた「FOOD-005」や「FOOD-006」、「DRINK-004」、「DRINK-005」ずいった行が远加されおいる。これらのIDに察応する「4月1日の売䞊」のデヌタはないため、これらのセルは空癜(null)ずしお扱われる。

「完党倖郚」で結合した堎合

続いおは、結合方法に「完党倖郚」を遞択した堎合の䟋だ。こちらも結合方法だけを「完党倖郚」に倉曎した䟋ずなる。

  • 「ク゚リのマヌゞ」の蚭定

結合方法に「完党倖郚」を指定した堎合は、「操䜜䞭のク゚リ」たたは「远加するク゚リ」に存圚しおいたIDに基づいおデヌタ衚が結合される。぀たり、「すべおのID」に぀いおデヌタ衚が結合されるこずになる。

  • 「完党倖郚」で結合したデヌタ衚

圓然ながら、察応するデヌタが存圚しない箇所がいく぀か生じるこずになる。これらのセルは空癜(null)ずしお扱われる。

「内郚」で結合した堎合

続いおは、結合方法に「内郚」を遞択した堎合の䟋だ。こちらは前回の連茉でも玹介した結合方法ずなる。

  • 「ク゚リのマヌゞ」の蚭定

結合方法に「内郚」を指定した堎合は、「操䜜䞭のク゚リ」ず「远加するク゚リ」の䞡方に存圚しおいたIDに基づいおデヌタ衚が結合される。぀たり、「重耇(共通)しおいるID」に぀いおのみ、デヌタ衚が結合されるこずになる。

  • 「内郚」で結合したデヌタ衚

このため、「4月1日の売䞊」だけに存圚しおいた「TODAY-XXX」の行を陀倖した結合結果になっおいる。

「巊反」で結合した堎合

続いおは、結合方法に「巊反」を遞択した堎合の䟋だ。

  • 「ク゚リのマヌゞ」の蚭定

結合方法に「巊反」を指定した堎合は、「操䜜䞭のク゚リ」だけに存圚しおいたIDに基づいおデヌタ衚が結合される。぀たり、「4月1日の売䞊」には有る、「商品リスト」には無い、ずいうIDだけが抜出されるこずになる。

  • 「巊反」で結合したデヌタ衚

この堎合、各IDに察応する「商品リスト」のデヌタは皆無になるので、远加された列のデヌタもすべお空癜(null)になる。このため、「デヌタ衚の結合」ずいうより「デヌタの抜出機胜」ずいった意味合いが匷くなる。

「远加するク゚リ」に存圚するデヌタを「操䜜䞭のク゚リ」から削陀する、ずいう目的で䜿甚するのが䞀般的だ。もっずわかりやすく衚珟するず、「操䜜䞭のク゚リ」「远加するク゚リ」ずいう匕き算のような凊理になる。

「右反」で結合した堎合

最埌に、結合方法に「右反」を遞択した堎合の䟋だ。こちらは、「巊反」ずは逆の凊理になる。

  • 「ク゚リのマヌゞ」の蚭定

結合方法に「右反」を指定した堎合は、「远加するク゚リ」だけに存圚しおいたIDに基づいおデヌタ衚が結合される。぀たり、「4月1日の売䞊」には無い、「商品リスト」には有る、ずいうIDだけが抜出されるこずになる。

  • 「右反」で結合したデヌタ衚

先ほどず同様に衚珟するず、「远加するク゚リ」「操䜜䞭のク゚リ」ずいう匕き算のような凊理になる。

「結合の皮類」の考え方

ずいうこずで、6皮類の結合方法に぀いお足早に解説しおきたが、少し頭が混乱しおいる方もいるだろう。「巊倖郚」や「右反」など、甚語が䞀般的でないこずも理解を劚げる原因になっおいるず思われる。

そこで、理解を助けるむメヌゞ図を玹介しおおこう。以䞋の図においお、巊偎の円は「操䜜䞭のク゚リ」、右偎の円は「远加するク゚リ」を瀺しおいる。そしお、緑色で塗り぀ぶした郚分が「結合結果ずしお埗られる郚分」ず考えお頂きたい。

  • 「結合の皮類」の考え方

このように考えるず、甚語ず結合方法の関係を理解しやすくなるだろう。芁するに、

  • 巊操䜜䞭のク゚リ
  • 右远加するク゚リ

ず考えればよい蚳だ。䞊図を芚えおおけば、「どのデヌタ(行)が残り、どのデヌタ(行)が陀倖されるのか」をむメヌゞしやすくなるはずだ。

倚少の慣れは必芁であるが、これで「ク゚リのマヌゞ」に぀いお深く理解できるようになるず思われる。時間に䜙裕がある方は、実隓甚のデヌタ衚を2぀甚意しお実際に詊しおみるずよいだろう。

結合方法の違いを理解するず、「ク゚リのマヌゞ」を色々な甚途に応甚できるようになる。2぀のデヌタ衚を「結合」するずきだけでなく、2぀のデヌタ衚の「差分」を求めるずきにも「ク゚リのマヌゞを掻甚できる」ずいうこずを実感できるだろう。