![見出し画像](https://assets.st-note.com/production/uploads/images/77862585/rectangle_large_type_2_03baf3842dc301743145db80ca781c63.png?width=1200)
【Airtable】表の外部結合:「左」があるなら「右」もある?
前回記事の続きです。今回も「Airtableでリレーションシップを設定すると、結局、テーブルは何結合するの?」をテーマとしてお話しします。
前回は、次のことを確認しました。
「得意先」テーブルに、Link to Another Recordフィールド(連携先:「担当者」テーブル)と、Lookupフィールドを設置することにより、「得意先」テーブルと「担当者」テーブルが「外部結合」すること
SQLで同様の表結合を行うときは、「得意先テーブル LEFT OUTER JOIN 担当者テーブル」のように「左外部結合」の記述をすること
これを踏まえて先に進みます。
「すでに頭くらくらです😑」
ですよね。でも、もう一息です。今回が最後ですから!ここまでくれば、ただAirtableでリレーションシップを設定できるというだけでなく、「表結合」とはそもそもどういうものなのか、が理解できます(きっと!)。
で、今回は、「担当者テーブル」の方に着目します。
「担当者テーブル」も外部結合だが…
それでは、「担当者テーブル」の方を再度、確認してみましょう。
Link to Another Recordフィールドとして、「得意先」列があります。これを基にして、「得意先」「住所」「電話番号」という列を「得意先テーブル」から参照しています。
![](https://assets.st-note.com/img/1651388052358-yEwiiU32PI.png?width=1200)
ここで、「担当者テーブル」の行数に着目します。Link to Another Recordフィールドを設定したからといって、表示される行数は一つも減っていません。
一方、得意先テーブルの行はどうでしょうか?今回のテーブルの場合は、すべての行(A社~E社)までの行が参照されているのですが、もし担当者が一人もいない得意先があったら、その会社はこの「担当者テーブル」には現れません。
となりますと、このテーブル(ビュー)は、2つの表が外部結合された結果と言えそうです。
今回の場合、「担当者テーブル」のすべての行(キーである「担当者コード」に値が存在することが条件)が表示される一方、「得意先テーブル」は、結合条件となるキー値が「担当者テーブル」の値と一致する行だけ表示されています。
では、この外部結合をSQLをつかって深堀しましょう!
「右」なのか「左」なのか、それが問題だ
「得意先テーブル」と「担当者テーブル」をSQLを使って外部結合します。SQL文は次のとおりです。From句に着目してください。
![](https://assets.st-note.com/img/1651387993916-V8EPJr4PWX.png?width=1200)
「前回とほぼ同じような…。😑」
いえ、何かが違います。そうです!「LEFT OUTER JOIN」(左外部結合)ではなく、「RIGHT OUTER JOIN」(右外部結合)になっています。
From テーブルA RIGHT OUTER JOIN テーブルB
この場合、テーブルBの方が全行表示され、テーブルAの方は、キーの値が一致した行だけ表示されます。LEFT OUTER JOINの逆ですね。ですから、「担当者テーブル」の方は、全行表示されます。
結果はこちらです。どん!
![](https://assets.st-note.com/img/1651388028064-HAjvqRcV8H.png)
比較のために、Airtable上の「担当者テーブル」を下に再掲します。Link to Another Recordフィールドである「得意先」列を除いて同じですね!(山本さんが2行になっていることについては、前々回記事をご覧ください。)
![](https://assets.st-note.com/img/1651725765418-P6sCeErLGZ.png?width=1200)
ここで注目するのは、太田さんの行です。太田さんは、担当する得意先がないにも関わらず、得られた表に存在しています。ということは、「担当者テーブル」が全行抽出の外部結合が行われたことが分かります。
はい、これで1対多のリレーションシップを設定した「担当者テーブル」と「得意先テーブル」は、いずれも「外部結合」という形でビューが作られるということが確認できました~。
「でも、なんか表結合のパターンってもう一つありませんでしたか?🤔」
あ、「全外部結合(Full Outer Join)」については、触れていませんでした。これについても、見ておきましょう。これで4パターンすべてを見通せることになりますね!これは、次回にします。
では、ビーダゼーン!
※私のやる気アップとブログの品質向上につながりますので、記事が気に入られた方は、「ポチっ」と好きボタンを押してくださったり、フォローいただけますと幸いです🙇。
この記事が気に入ったらサポートをしてみませんか?