見出し画像

【Airtable】表結合のすべてのパターンを総まとめ

いよいよ、Airtableのリレーションシップを設定して得られれる「表結合」の結果について総まとめします~😆。

これまでの説明では、表結合の4つのパターンについて分かりにくいところが多かったと思います。今回は、ベン図(Venn Diagram)も使って解説しますよ。

今回の記事を読めば、「表結合」の考え方がイマイチよく分からなかった方も、きっと腹落ちしていただけます、きっと!

では、行ってみよ~😄。

※各結合の特徴が分かりやすくなるように、担当者コードがNull(値が空)のレコードを、コード番号6として「得意先テーブル」に追加しました。前回までの記事でご紹介したテーブルとは、この点が異なりますのでご了承ください。

左外部結合(得意先テーブル側)

まず最初に、「得意先テーブル」です。このテーブルに、Link to Another Recordフィールド及びLookupフィールドを設置して、「担当者テーブル」とリレーションシップを設定した結果は、(SQLでいうところの)「左外部結合」でしたね!

上記のベン図のとおり、「得意先テーブル」の全行が抽出され、「担当者テーブル」は、キーとなる「担当者コード」の値が一致した行だけ抽出されます。

Airtable

下図は、Airtable上の「得意先テーブル」です。F有限会社には、担当者コードが入っていません。担当者が決まってないようです。でも、表示されています。結合条件となるキー(担当者コード)に値があろうが、なかろうが、表示されているんですね。

そして、もう一つ留意したいのは、担当する得意先がいなかった「太田勘助」さんは、抽出されなかったことです。「担当者コード」の値が一致しなかったためですね。

SQL

同じことをSQLで実行すると、次の画像のとおりです。F有限会社の担当者コード列と担当者名列は、NULL(値が無い)と表示されています。が、F有限会社も含めて、全得意先の行が抽出されました。

太田勘助さんが抽出されなかったのは、上記の説明のとおりです。

SQL文を確認しましょう。From句がLEFT OUTER JOINになっています。

以上、左外部結合(得意先テーブル)でした。

右外部結合(担当者テーブル側)

続いて、「担当者テーブル」です。このテーブルに、Link to Another Recordフィールド及びLookupフィールドを設置して、「得意先テーブル」とリレーションシップを設定した結果は、(SQLでいうところの)「右外部結合」でした!

上記のベン図のとおり、「担当者テーブル」の全行が抽出され、「得意先テーブル」は、キーとなる「担当者コード」の値が一致した行だけ抽出されます。本当にそうか見てみましょう。

Airtable

下図は、Airtable上の「担当者テーブル」です。「太田勘助」さんの「担当者コード」は、「得意先テーブル」の担当者コードに一つもありませんでした。それでも、太田さんの行は、表示されています。

また、F有限会社は、抽出されていません。「担当者コード」に値がなく担当者テーブルに紐づく行がなかったためです。

SQL

同じことをSQLで実行すると、次の画像のとおりです。太田勘助さんの「得意先」、「住所」、「電話番号」の各列は、NULL(値が無い)と表示されています。が、太田さんも含めて、全担当者の行が抽出されました。

F有限会社が抽出されなかったのは、上記の説明のとおりです。

このセクションの最後にSQL文を確認しましょう。From句がRIGHT OUTER JOINになっています。

以上、右外部結合(担当者テーブル)でした。次!

全外部結合

以下、「全外部結合」と「内部結合」は、Airtableでは実現できていません。Airtableで実現できるかどうかは、将来的に調べたいと思います。

が、理屈上は、「全外部結合」と「内部結合」という表結合のパターンがあることは、Airtable上で自分は何をしたか(外部結合です)を知るためにも大切です。

以上を踏まえて、全外部結合についてです。これはまだ説明していませんでした。ようするに、結合条件となるキーに、一致する値があるか無いかに関わらず、両表の全行が抽出される、というものです。

ベン図であらわすと次の通りです。

SQLで確認しましょう!😆

SQLのみ

SQLで、「得意先テーブル」と「担当者テーブル」を全外部結合した結果は、次の通りです。

SQL文は、次の通りです。From句にFULL OUTER JOINと書くのですね。

「得意先テーブル」のF有限会社には、「担当者コード」に値がありませんでした。また、「担当者テーブル」の太田勘助さんは、「得意先テーブル」中の「担当者コード」列に、彼の「担当者コード」は一つもありませんでした。

しかし!F有限会社も太田勘助さんも抽出されたことにご注目ください。

以上が、全外部結合です。次でラストです!

内部結合

最後に内部結合です。いずれの表についても、結合条件となるキーに、一致する値がある場合に限って、行が抽出されるというものです。

ベン図もご確認ください。

SQLのみ

SQLで内部結合を行った結果は、次の通りです。

見ての通り、F有限会社も太田勘助さんも、残念ながら?抽出されておりません。

SQL文は、次の通りです。SQLのテキストで真っ先に学ぶこのシンプルなSQL文は、「内部結合」のことだった、ということですねえ。

はい、以上が内部結合でした。

まとめ

まとめるほどではないですが、一応、一言でまとめます!

Airtableのリレーションシップを設定して得られれる「表結合」の結果は、外部結合でした。

「Link to Another Recordフィールドを設置したテーブルに、参照先のテーブルの行で、キーの値と一致するものが、Lookupフィールドを通じてテーブルの右側に付け足される」というイメージを持っていれば、それでOKでございます。

最初からそういうイメージでした。そうですよね😅。でも、全外部結合や内部結合もあることを知っておくと、リレーションシップに対する理解が深まったはずです。

では、ビーダゼーン!

※私のやる気アップとブログの品質向上につながりますので、記事が気に入られた方は、「ポチっ」と好きボタンを押してくださったり、フォローいただけますと幸いです🙇。



この記事が気に入ったらサポートをしてみませんか?