1

同じキーを持つ 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 ).
4

2 に答える 2