C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■98135 / 11階層)  SQLの結合について
□投稿者/ 魔界の仮面弁士 (3185回)-(2021/09/22(Wed) 17:14:30)
No98133 (魔界の仮面弁士) に追記
> ひとまず WHERE 句が無ければ、FULL OUTER JOIN によって
> 下記の 15 行のデータになります。
> 
> そこに WHERE 実績.指図ID = 'A' を加えれば、
> 1〜6 行目だけに絞り込まれるのは必然かと。

たとえば、WITH 句あるいは副問い合わせを使って

 FROM 「12 件の 実績のうち、指図ID = 'A' で絞り込んだ 6 件」
 FULL OUTER JOIN 「マスタ全件 8 件」

という絞り込みにすれば、結果は 11 件になりますね。
先の No98133 の 15 行のデータと比較してみます。

行1: 抽出される(過去実績 A-1111-0001 は  A  なので対象、現在マスタ 1111-0001 がマップされる)
行2: 抽出される(過去実績 A-1111-0002 は  A  なので対象、現在マスタ 1111-0002 は無いので null 表記)
行3: 抽出される(過去実績 A-1111-0003 は  A  なので対象、現在マスタ 1111-0003 がマップされる)
行4: 抽出される(過去実績 A-3333-0001 は  A  なので対象、現在マスタ 3333-0001 は無いので null 表記)
行5: 抽出される(過去実績 A-3333-0002 は  A  なので対象、現在マスタ 3333-0002 がマップされる)
行6: 抽出される(過去実績 A-3333-0003 は  A  なので対象、現在マスタ 3333-0003 は無いので null 表記)
行7: 抽出対象外(過去実績 B-1111-0001 は 非A なので除外、現在マスタ 1111-0001 は既に行1にマップ済み)
行8: 抽出対象外(過去実績 B-1111-0002 は 非A なので除外、現在マスタ 1111-0002 はそもそも存在していない)
行9: 抽出対象外(過去実績 B-1111-0003 は 非A なので除外、現在マスタ 1111-0003 は既に行3にマップ済み)
行10: 抽出される(過去実績 B-2222-0001 は 非A⇒null 表記、現在マスタ 2222-0001 がマップされる)
行11: 抽出対象外(過去実績 B-2222-0002 は 非A なので除外、現在マスタ 2222-0002 はそもそも存在していない)
行12: 抽出される(過去実績 B-2222-0003 は 非A⇒null 表記、現在マスタ 2222-0003 がマップされる)
行13: 抽出される(過去実績 *-1111-0004 は無い⇒null 表記、現在マスタ 1111-0004 がマップされる)
行14: 抽出される(過去実績 *-2222-0004 は無い⇒null 表記、現在マスタ 2222-0004 がマップされる)
行15: 抽出される(過去実績 *-3333-0005 は無い⇒null 表記、現在マスタ 3333-0005 がマップされる)


■No98134 (鏡月 さん) に返信
> 指図IDをキーに検索し実績作業内容と現在のマスタ内の作業内容の差異について比較したいと考えております。
> 下記データのような値を出力することは可能でしょうか。

FULL JOIN にもかかわらず、抽出結果から 品番 = '2222' が消える理由を説明してください。

No98134 の行番号を 1'〜8' と表記して、
先の No98133 の 15 行のデータと比較してみると:

行1' ⇒ 行 1(過去実績 A-1111-0001、現在マスタ 1111-0001)
行2' ⇒ 行 2(過去実績 A-1111-0002、現在マスタなしで null)
行3' ⇒ 行 3(過去実績 A-1111-0003、現在マスタ 1111-0003)
行4' ⇒ 行13(過去実績なしで null 、現在マスタ 1111-0004)
行5' ⇒ 行 4(過去実績 A-3333-0001、現在マスタなしで null)
行6' ⇒ 行 5(過去実績 A-3333-0002、現在マスタ 3333-0002)
行7' ⇒ 行 6(過去実績 A-3333-0003、現在マスタなしで null)
行8' ⇒ 行15(過去実績なしで null 、現在マスタ 3333-0005)

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[10]: SQLの結合について /鏡月 →Re[12]: SQLの結合について /魔界の仮面弁士
 
上記関連ツリー

SQLの結合について / 鏡月 (21/09/22(Wed) 11:18) #98123
Re[1]: SQLの結合について / 魔界の仮面弁士 (21/09/22(Wed) 11:46) #98124
  └ Re[2]: SQLの結合について / 鏡月 (21/09/22(Wed) 13:04) #98125
    └ Re[3]: SQLの結合について / 魔界の仮面弁士 (21/09/22(Wed) 13:24) #98126
      └ Re[4]: SQLの結合について / 鏡月 (21/09/22(Wed) 13:32) #98127
        └ Re[5]: SQLの結合について / 魔界の仮面弁士 (21/09/22(Wed) 14:07) #98129
          └ Re[6]: SQLの結合について / 鏡月 (21/09/22(Wed) 14:10) #98130
            └ Re[7]: SQLの結合について / 魔界の仮面弁士 (21/09/22(Wed) 14:52) #98131
              └ Re[8]: SQLの結合について / 鏡月 (21/09/22(Wed) 15:06) #98132
                └ Re[9]: SQLの結合について / 魔界の仮面弁士 (21/09/22(Wed) 16:15) #98133
                  └ Re[10]: SQLの結合について / 鏡月 (21/09/22(Wed) 16:25) #98134
                    └ SQLの結合について / 魔界の仮面弁士 (21/09/22(Wed) 17:14) #98135 ←Now
                      └ Re[12]: SQLの結合について / 魔界の仮面弁士 (21/09/22(Wed) 17:27) #98137
                        └ Re[13]: SQLの結合について / 鏡月 (21/09/22(Wed) 20:34) #98138 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信