2つのデータセットとの左結合を使用して、すべてが同じKeyフィールドを持つMaster Datasetに結合しようとしています。だから特別なことはない。 これらのセカンダリデータセットのうちの1つは、別のクエリの結果であり、そのために存在する場合と存在しない場合があります。明らかに、このテーブルが存在しない場合、私のJOINステートメントは失敗します。LEFT JOINのデータセットが存在する場合と存在しない場合
実際に単純化されたバージョンのコードの下では、JOINを使用してテーブルbまたはcに存在する行をtable_aから除外します(存在する場合)。
SELECT a.id, a.name
FROM table_a a
LEFT JOIN table_b b
ON a.id = b.id
LEFT JOIN table c c
ON a.id = c.id
WHERE b.id IS NULL
AND c.id IS NULL;
そして何が問題なのですか? – Shadow
おそらく、そのテーブルの1つが存在しない場合、自動的に失敗しないクエリの書き方です。それは言った:_ "それらの二次データセットの1つは、別のクエリの結果であり、そのために存在してもいなくてもよい"ということです。それはあいまいに聞こえ、おそらくデザインの匂いに似ています。 –
私は詳しく説明します: 私たちのBIプラットフォームであるSFTPサーバー上のファイルを毎日のベースで受信し、このファイルをピックアップしてDAILYデータセットに変換します。ただし、その日のファイルがない場合は、 DAILYデータセットもありません。 私が作成しようとしているSQLスクリプトは、HISTORYテーブルを作成および維持し、HISTORYデータセットには存在しないDAILYデータセットの行を追加します。両方のデータセットに存在する行を更新します。 –