同じキーを持つ 2 つのテーブルがあります。内部テーブルのデータを後で操作せずに、1 つの SELECT で、右側のテーブルに対応するレコードがない左側のテーブルのすべてのレコードを取得したい (つまり、右側のテーブルの列は空の)。
最も論理的な方法は次のようになりますが、WHERE 句の外部結合で右側のフィールドを使用できないため、これはコンパイルされません。
select e~equnr into lt_equnr
from equi as e
left outer join eqbs as b on e~equnr = b~equnr
where e~matnr = material
and b~b_werk = space.
有望に見えてコンパイルできる別の方法は次のとおりですが、右側のテーブルに対応するエントリがあるものでさえも戻すため、機能しません。
select e~equnr into table lt_equnr
from equi as e
left outer join eqbs as b on e~equnr = b~equnr
and b~b_werk = space
where e~matnr = material.
このオプションは、右側のフィールドを空白にするだけですが、結果セットにはすべてが含まれます。これは、右側からフィールドを選択することで確認できます。
これも機能しない別のオプションは、サブセレクトを使用することです。
select e~equnr into table lt_equnr
from equi as e
where e~matnr = material
and e~equnr not in ( select equnr from equi where equnr = e~equnr ).