스키마에 테이블이 있는데, 테이블 ACTION이 있는데, ACTION이라는 동의어도 있는데 다른 스키마에 다른 테이블을 참조합니다. 이제오라클 동의어 선택
, 내가 ACTION
에서
선택 쿼리 *를 실행할 때 그것은 동의어를 테이블에서 레코드를 선택,하지만하지 않습니다.
어쨌든 나와 동의어와 테이블을 함께 선택 하시겠습니까?
고맙습니다
스키마에 테이블이 있는데, 테이블 ACTION이 있는데, ACTION이라는 동의어도 있는데 다른 스키마에 다른 테이블을 참조합니다. 이제오라클 동의어 선택
, 내가 ACTION
에서
선택 쿼리 *를 실행할 때 그것은 동의어를 테이블에서 레코드를 선택,하지만하지 않습니다.
어쨌든 나와 동의어와 테이블을 함께 선택 하시겠습니까?
고맙습니다
글쎄, 당신의 기본 액션 테이블의 이름을 변경해야합니다,의는 LOCAL_ACTION을 가정 해 봅시다.
의이 액션 동의어가 otheruser.LOCAL_ACTION 테이블에 척하자
...그럼 당신은 할 작업의 동의어를 다시 정의 할 수 있습니다 : 결국 그런
SELECT * from LOCAL_ACTION
UNION
SELECT * from otheruser.LOCAL_ACTION
선택 *에서에게 액션 줄 것이다 당신에게 두 테이블의 결합 된 목록.
ACTION 동의어가 ACTION 테이블과 동일한 스키마에 있다고 생각하지 않습니다. 이는 ACTION 테이블이 Oracle에서 허용되지 않기 때문입니다. 대부분 ACTION 동의어는 다른 스키마에 있으며 아마도 PUBLIC 동의어입니다. 그런 경우에는 사용할 수
select * from ACTION
union
select * from public.ACTION
즉 공공 동의어 수 있도록 테이블과 개인 동의어은 참으로, 같은 이름 공간을 공유합니다 : http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
하는 UNION 결과 집합에 암시 적 구별 된주의 . UNION ALL이 필요합니다.
select * from ACTION
union all
select * from public.ACTION