見出し画像

【Airtable】SQLと比較!全部のレコードを表示する「左外部結合」

前回記事の続きです。前回記事では、Airtableでリレーションシップを設定したときの表結合は、「内部結合」(結合条件となるキーが一致した行のみが表示)ではないことを確認しました!

該当しないものを先に説明してしまってすみません😅。今回こそ、Airtableでリレーションシップを設定した結果、何結合が得られるのかを申します。

結論は、「外部結合」です。Link to Another Recordフィールドを設置したテーブル(参照元)は、すべての行が表示されます。一方、「参照先」のテーブルにある行は、「参照元」のテーブルと結合して、該当があったものだけ「参照元」のテーブルで表示されることになります。

何を言っているのか、分からない、、、ですね。具体的に見ていきましょう!😄

参照元のすべての行が表示されている

ではでは、まず「得意先テーブル」を見てみましょう。「担当者テーブル」と紐づけているのでしたね。「担当者コード」列をキーにして、「担当者名」を取得しました。

得意先テーブル

では、「得意先テーブル」に表示されている「行の数」に注目します。行の数は、Link to Another Recordフィールドを設置する前と変わりません。つまり、すべての行が表示されています。

一方、参照先の「担当者」テーブルの行はどうでしょうか?山本さんが1行目と5行目に重複して表示される一方、太田さんの行は取得されませんでした。というのも、下の担当者テーブルのとおり、太田さんは担当する得意先が一つもないことが原因です。

担当者テーブル:太田さんの得意先はない

このように、参照元のテーブルの行の表示は、全件表示で変わらない一方、参照先のテーブル(担当者)の行については、参照元(得意先)で一致する行がある場合に限り取得されるのですね。

ということは、Airtableでリレーションシップを設定したときの表結合は、「外部結合」で間違いないです、と言い来たり野ですが、もう少し確認してみましょう。SQLを使います。

SQLと比較しよう

SQLでは、どのように「外部結合」させるのでしょうか。何結合させるのかも分からずに、テキトーにSQLを入力して表結合をしてしまうと、欲しい結果が満足に得られなくなります。ですからので、丁寧に確認しながら、SQL文を入力しましょう。

Airtableと同じテーブルを持つデータベースをSQLサーバに準備しました。さっそく、SQL文を入力して外部結合を試みます。次の通り、打ち込みました。

注目するのは、From句です。LEFT OUTER JOIN(左外部結合)としました。式は次の通りとなります。

テーブルA  LEFT OUTER JOIN テーブルB

テーブルAからは、すべての行(ただし、キーに値があるもの)を取得します。一方、テーブルBからは、Aと合致した行だけ取得します。

となれば、得られる結果は、次の通りになります。

SQLの結果

次のAirtableの「得意先テーブル」(Link to Another Recordフィールド設置済み)と比較しましょう。同じであることが分かりますね!

Airtableのビュー

上記のとおり、AirtableでLink to Another Recordフィールドを設置し、Lookupフィールドで列のデータを取得した結果は、2つの表の「外部結合」であることが確認できました~😆。

しかし、何かを忘れています。

そうだ、上記のような結論を得たものの、「担当者」テーブルの方を確認していなかったですね。次の記事で「担当者」テーブルも「外部結合」という結論でいいのか、確認してみることにしましょう😅!実は、使うSQL文もちょっと違うんだな~。お楽しみに!

では、ビーダゼーン!

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





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