「RecordJoinコンポーネントを使ってレコードをまとめる」で出てきた、RecordJoinコンポーネントのプロパティに存在するJoin処理をINNER/OUTERについての解説です。
事前準備:INNER JOIN(内部結合)とOUTER JOIN(外部結合)について
大まかな認識としては・・・
INNER JOIN(内部結合)では結合できる行のみをまとめます。
OUTER JOIN(外部結合)では結合できなくてもテーブルに存在する出力対象のフィールドはそのまま結合結果に表示されます。
(OUTER JOINでは場合によっては空欄のフィールドが表示されます。)
※結合の条件をプロパティの「入力キー」タブで設定することは結合の種類にかかわらず同じです。
INNER JOIN(内部結合)の場合
RecordJoinコンポーネントでINNER JOINに設定するにはプロパティの「基本」タブでJOIN処理をINNERに設定します。

今回は以下の2つのストリームで品名を使ってINNER JOINします。
〇ストリーム1側のレコード
"工場名","品名"
"東京工場","コーヒー"
"大阪工場","梅酒"
"東京工場","水"
"横浜工場","お茶"
※1行目のタイトル行は取得しない設定になっています。
〇ストリーム2側のレコード
"品名","数量","金額","合計金額"
"お茶",1,100,0
"コーヒー",2,120,0
"梅酒",4,350,0
※1行目のタイトル行と4つ目のフィールドは取得しない設定になっています。
出力される品名はストリーム1側の品名です。
![]()
INNER JOINの結果
"東京工場","コーヒー","2","120"
"大阪工場","梅酒","4","350"
"横浜工場","お茶","1","100"
ストリーム2側に品名が水の行がないため、その行ではjoinが行われません。
そのため、ストリーム1側の「"東京工場","水"」の行は出力されません。
OUTER JOIN(外部結合)の場合
INNER JOINと同じ条件で、プロパティのJOIN処理をOUTERに変更してOUTER JOINを行います。
OUTER JOINの結果
"東京工場","コーヒー","2","120"
"大阪工場","梅酒","4","350"
"東京工場","水","",""
"横浜工場","お茶","1","100"
ストリーム1の「"東京工場","水"」の行はストリーム2側に品名が水でjoinできるレコードが存在しないため、数量と金額のフィールドが空欄になります。OUTER JOINの場合、joinできなかったレコードもフィールドが空欄で出力されます。