SQL JOIN

これをマスター

マスター 複数のデータをくっ付けよう

テーマ

売上とお客さんの年代ごとに集計してみよう
 
 
テーブル: sales
 取引ID取引日顧客ID商品ID合計金額
174/1/2055852250
2114/1/2078127700
3194/1/2078846500
4324/1/2068323500
5334/1/209934245
6394/1/2066432300
7504/1/2031649600
 
テーブル: customer
 顧客ID氏名顧客歴誕生日性別
199ケリーキー4273918412M
2316Clark Schroeder4274218474M
3558エルビス・カルデナス4274518536M
4664ラファエルエステス4274818598M
5683コリン・リン4275018660M
6781イゴールビーチ4275318722M
7788スコット・ホールデン4275618784M
 
結果: (スペース都合で5行のみ表示)
 取引ID取引日顧客ID商品ID合計金額氏名
174/1/2055852250エルビス・カルデナス
2114/1/2078127700イゴールビーチ
3194/1/2078846500スコット・ホールデン
4324/1/2068323500コリン・リン
5334/1/209934245ケリーキー

はじめに

SQLのJOIN (ジョイン)は、複数のデータテーブルを
特定の値(キー)を元に紐づけるコマンドです

特定のキーを元に紐づける意味では
エクセルのVLOOKUPに考え方は似ています
JOINは言ってみると複数のブックやシートのデータを
特定のキーを元に、何千万行のデータサイズでも
一気にとってこれるところと
複雑な条件を元に抽出出来るところです

JOINを使った検索は
エクセルなどのデータシートでマニュアルで行うよりも
一括して検索が出来る点で、SQLを使うメリットと言えます

上の例を見てみましょう

まずは何をやろうとしているかと言うと
「売上データを顧客データと紐づけて
どのお客さんが何を買われたか」を検索しています

SQLを見る前に2つのテーブルを見てみてください
売上 (sales)テーブルには売上データが入っていますが
顧客のデータは数字の顧客IDだけです
これだけではお名前や連絡先などが分かりません

反対に顧客(customer)テーブルには顧客のデータはありますが
売上のデータは入っていません

お客さんの売上を知りたい場合、両方のテーブルを紐づけて
両方のテーブルから必要な情報を抜き出して来たいところです

そこで、両方のテーブルに共通するカラム (キー)を見つけます
2つのテーブルをみると顧客IDカラムが両方のがテーブルにあります
これを元に紐づけると良さそうです

そこでSQLではJOIN句を使って紐づけます

SELECT *
FROM テーブルA A
INNER JOIN テーブルB B
ON A.[キー]=B.[キー]

FROM 1つ目のテーブル の後に
JOIN を繋げて、2つ目のテーブル名を指定します
さらに、ON 1つ目のテーブル.キー=2つ目以降のテーブル.キー
どのカラムを元にくっつけるかをを指定してあげます

JOINには大きく
INNER, LEFT, RIGHT, OUTER の
4つのタイプがあります

あわせてご覧ください

EXCEL SUMIF

Excel

Excel SUMIFの使い方を分かりやすい例で紹介

Read More

SQL CASE

SQL

SQL Tips

Read More

EXCEL SEARCH

Excel

Excel EOMONTHの使い方を分かりやすい例で紹介

Read More