見出し画像

【Airtable】表の外部結合:「左」があるなら「右」もある?

前回記事の続きです。今回も「Airtableでリレーションシップを設定すると、結局、テーブルは何結合するの?」をテーマとしてお話しします。

前回は、次のことを確認しました。

  • 「得意先」テーブルに、Link to Another Recordフィールド(連携先:「担当者」テーブル)と、Lookupフィールドを設置することにより、「得意先」テーブルと「担当者」テーブルが「外部結合」すること

  • SQLで同様の表結合を行うときは、「得意先テーブル LEFT OUTER JOIN 担当者テーブル」のように「左外部結合」の記述をすること

これを踏まえて先に進みます。

「すでに頭くらくらです😑」

ですよね。でも、もう一息です。今回が最後ですから!ここまでくれば、ただAirtableでリレーションシップを設定できるというだけでなく、「表結合」とはそもそもどういうものなのか、が理解できます(きっと!)。

で、今回は、「担当者テーブル」の方に着目します。

「担当者テーブル」も外部結合だが…

それでは、「担当者テーブル」の方を再度、確認してみましょう。

Link to Another Recordフィールドとして、「得意先」列があります。これを基にして、「得意先」「住所」「電話番号」という列を「得意先テーブル」から参照しています。

ここで、「担当者テーブル」の行数に着目します。Link to Another Recordフィールドを設定したからといって、表示される行数は一つも減っていません

一方、得意先テーブルの行はどうでしょうか?今回のテーブルの場合は、すべての行(A社~E社)までの行が参照されているのですが、もし担当者が一人もいない得意先があったら、その会社はこの「担当者テーブル」には現れません

となりますと、このテーブル(ビュー)は、2つの表が外部結合された結果と言えそうです。

今回の場合、「担当者テーブル」のすべての行(キーである「担当者コード」に値が存在することが条件)が表示される一方、「得意先テーブル」は、結合条件となるキー値が「担当者テーブル」の値と一致する行だけ表示されています。

では、この外部結合をSQLをつかって深堀しましょう!

「右」なのか「左」なのか、それが問題だ

「得意先テーブル」と「担当者テーブル」をSQLを使って外部結合します。SQL文は次のとおりです。From句に着目してください。

「前回とほぼ同じような…。😑」

いえ、何かが違います。そうです!「LEFT OUTER JOIN」(左外部結合)ではなく、「RIGHT OUTER JOIN」(右外部結合)になっています。

From テーブルA RIGHT OUTER JOIN テーブルB

この場合、テーブルBの方が全行表示され、テーブルAの方は、キーの値が一致した行だけ表示されます。LEFT OUTER JOINの逆ですね。ですから、「担当者テーブル」の方は、全行表示されます。

結果はこちらです。どん!

比較のために、Airtable上の「担当者テーブル」を下に再掲します。Link to Another Recordフィールドである「得意先」列を除いて同じですね!(山本さんが2行になっていることについては、前々回記事をご覧ください。)

ここで注目するのは、太田さんの行です。太田さんは、担当する得意先がないにも関わらず、得られた表に存在しています。ということは、「担当者テーブル」が全行抽出の外部結合が行われたことが分かります。

はい、これで1対多のリレーションシップを設定した「担当者テーブル」と「得意先テーブル」は、いずれも「外部結合」という形でビューが作られるということが確認できました~。

「でも、なんか表結合のパターンってもう一つありませんでしたか?🤔」

あ、「全外部結合(Full Outer Join)」については、触れていませんでした。これについても、見ておきましょう。これで4パターンすべてを見通せることになりますね!これは、次回にします。

では、ビーダゼーン!

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


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