【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からは、すべての行(ただし、キーに値があるもの)を取得します。一方、テーブルBからは、Aと合致した行だけ取得します。
となれば、得られる結果は、次の通りになります。
次のAirtableの「得意先テーブル」(Link to Another Recordフィールド設置済み)と比較しましょう。同じであることが分かりますね!
上記のとおり、AirtableでLink to Another Recordフィールドを設置し、Lookupフィールドで列のデータを取得した結果は、2つの表の「外部結合」であることが確認できました~😆。
しかし、何かを忘れています。
そうだ、上記のような結論を得たものの、「担当者」テーブルの方を確認していなかったですね。次の記事で「担当者」テーブルも「外部結合」という結論でいいのか、確認してみることにしましょう😅!実は、使うSQL文もちょっと違うんだな~。お楽しみに!
では、ビーダゼーン!
※私のやる気アップとブログの品質向上につながりますので、記事が気に入られた方は、「ポチっ」と好きボタンを押してくださったり、フォローいただけますと幸いです🙇。
この記事が気に入ったらサポートをしてみませんか?