← メディア一覧

データのお見合い:SQLのJOIN

4分47秒 | DBSQL

基本情報技術者試験の頻出テーマを解説した動画コンテンツです。

トランスクリプト(字幕テキスト)

こんにちは。今日のテーマ、データを使っているとこういうこと結構ありませんか? 例えば手元に顧客リスト購入履歴の2つのデータがある とします。 まあ、別々のファイルになっていることが多いですよね。 で、この2つをうまくつなぎ合わせて、結局誰が何を買ったのっていうのを一覧で見たい。 さて、どうしましょうか? そこで出てくるのが、SQLJOINです。 これ、難しく考えなくて大丈夫です。 今回の話では、これをデータ専用のマッチングアプリだと思ってください。 そう、バラバラのデータを共通の目印でピタッと引き合わせてくれる、まさに運命の出会いをセッティングしてくれるすごい奴なんです。 じゃあ、早速最初のマッチング方法から見ていきましょうか。 一番よく使われるINNER JOIN。 これはですね、言ってみれば両思いのカップルだけを確実に探し出してくるサービスなんです。 はい、こちらが今回の参加者リストです。 左側が登録してくれたユーザー全員が入っている顧客リスト。 で、右側が今までの取引が全部記録された購入履歴。 よく見ると、どっちのリストにもユーザーIDっていう共通の項目がありますよね。 これが2つのデータを結ぶ、運命の赤い糸になるわけです。 さあ、ここからがINNER JOINの真骨頂ですよ。 この子はですね、両方のテーブルをじーっと見比べて、ユーザーIDが完全に一致するペア、まさに両思いの相手だけを探し出すんです。 ほら、イメージとしては左右のテーブルから同じIDを持つ行が磁石みたいにスッと引き寄せられてきて、ガチャンと合体して1つの行になる。 そんな感じです。 そして、こちらがマッチングの結果です。 どうです? 顧客リスト購入履歴、その両方にちゃんと名前があったユーザーだけがこの最終リストに残りました。 見事にカップル成立した人たちだけが集まったってわけですね。 ということは、大事なポイントはこれです。 テーブルとテーブルをまたいで、完璧に情報が揃っているデータだけを見たいんだっていう時。 そんな時はINNER JOINを使えば間違い無いんです。 でも、ここで「あれ?」って思いません? INNER JOINを使うと、顧客リストには名前があるのにまだ一度も買い物をしたことがないお客さんってどうなっちゃうんでしょう? そう、マッチング相手がいないから残念ながら最終結果からは居なくなっちゃうんですね。 でも大丈夫。 そんな片思いの状態もちゃんとリストに残してくれる優しい機能があるんです。 それがLEFT JOIN。 さあ、これがどういう動きをするのか見てみましょう。 この子のルールはすごくシンプルで、でも強力です。 LEFT JOINはこう宣言するんです。 左側のテーブル、つまり顧客リストにいる人は、たとえ購入履歴に相手が見つからなくても、何があっても全員結果に残しますって。 とにかく左側が主役、それがLEFT JOINなんですね。 そしてこちらがその結果です。 ほら、まだ購入してないお客さんもちゃんとリストに残ってますよね。 ただ、購入した商品のところはNULL、つまり空っぽになっています。 これはマッチング相手が見つかりませんでしたっていう印なんです。 左側のテーブルの人が右側に手を伸ばして見るんだけど誰もいない。 でもその人は消えたりしないで隣にそっと相手なしっていう透明なブロックみたいなものがくっつく。 そんなちょっとコミカルなイメージで捉えてみてください。 さて、これで両思いと片思い、2つのマッチング方法を見てきました。 じゃあ、いざという時どっちを選べばいいんでしょう? その答えは、皆さんが何を知りたいか次第なんです。 このスライドが、簡単な使い分けのヒントです。 もし購入実績のある有料顧客だけを知りたいなら、確実なペアだけを抜き出すINNER JOINですね。 逆に、登録しているお客さん全員をリストアップして、その上で誰が何を買ったか確認したいという場合は、全員を残してくれるLEFT JOIN。 目的によってこの2つをうまく使い分けるのがコツですよ。 つまり、JOINっていうのはデータに隠されたいろんな関係性を明らかにしてくれるとっても強力なツールなんですね。 さて、皆さんの手元にある今はまだバラバラのデータ。 その中にはまだ誰も知らないどんな面白い出会いが隠されているんでしょうか?

このコンテンツは Web society で視聴・学習できます。