スキーマ内に、テーブル ACTION などのテーブルがある状況に陥りましたが、別のテーブルを別のスキーマに参照する ACTION というシノニムも取得しました。
さて、クエリを実行すると
select * from ACTION
テーブルからレコードを選択しますが、シノニムは選択しません。
とにかく、シノニムとテーブルの両方を一緒に選択するにはどうすればよいですか?
ありがとう
Oracleでは許可されていないため、ACTIONシノニムがACTIONテーブルと同じスキーマにあるとは思いません。ACTION シノニムが他のスキーマにある可能性が高く、おそらく PUBLIC シノニムです。その場合は使用できます
select * from ACTION
union
select * from public.ACTION
基になる ACTION テーブルの名前を変更する必要があります。たとえば、LOCAL_ACTION を実行します。
ACTION シノニムが otheruser.LOCAL_ACTION テーブルにあるとしましょう...
次に、ACTION シノニムを次のように再定義できます。
SELECT * from LOCAL_ACTION
UNION
SELECT * from otheruser.LOCAL_ACTION
最後に select * from ACTION を実行すると、両方のテーブルを組み合わせたリストが表示されます。
テーブルとプライベート シノニムは実際に同じ名前空間を共有するため、パブリック シノニムです。
UNION は、結果セットに対する暗黙の個別であることに注意してください。あなたが必要としているのは UNION ALL です。
select * from ACTION
union all
select * from public.ACTION