복붙노트

[SQL] 그것에서 상속 부모를 쿼리 할 때 행의 소스 테이블의 이름을 가져옵니다

SQL

그것에서 상속 부모를 쿼리 할 때 행의 소스 테이블의 이름을 가져옵니다

나는 다른 하나에서 여러 테이블과 포스트 그레스 데이터베이스가 상속 있습니다. 나는 모든 그것의 아이들의 결과를 얻기 위해 부모 테이블에서 선택할 수 있지만 필요가 각 결과의 유래에서 테이블의 이름을 얻을 수 있습니다.

방법은 내가 단지 하나 개의 테이블을 조회하고, 어린이가 미리 결과에있을 것입니다 알고하지 않기 때문에 여기에 작동하지 않습니다 발견했다.

해결법

  1. ==============================

    1.이미 자신을 발견처럼 tableoid를 사용하여 특정 행의 소스 테이블을 식별합니다. regclass 형에 캐스트가 자동으로 검증을 거친 스키마 현재 search_path의에 따라 필요한 실제 이름을 검색합니다.

    이미 자신을 발견처럼 tableoid를 사용하여 특정 행의 소스 테이블을 식별합니다. regclass 형에 캐스트가 자동으로 검증을 거친 스키마 현재 search_path의에 따라 필요한 실제 이름을 검색합니다.

    SELECT *, tableoid::regclass::text AS table_name
    FROM   master.tbl
    WHERE  <some_condition>;
    

    더:

  2. ==============================

    2.이것은 상속의 섹션에서 PostgreSQL의 문서에 나와 있습니다. 하나는 그림과 같이, 결과에 테이블 이름을 포함하는 열을 추가 pg_class에서 relname와 함께 테이블의 숨겨진 tableoid 열을 사용할 수 있습니다 :

    이것은 상속의 섹션에서 PostgreSQL의 문서에 나와 있습니다. 하나는 그림과 같이, 결과에 테이블 이름을 포함하는 열을 추가 pg_class에서 relname와 함께 테이블의 숨겨진 tableoid 열을 사용할 수 있습니다 :

    SELECT t.*, p.relname FROM table t, pg_class p WHERE t.tableoid = p.oid;
    
  3. from https://stackoverflow.com/questions/24580352/get-the-name-of-a-rows-source-table-when-querying-the-parent-it-inherits-from by cc-by-sa and MIT license