[SQL] 포스트 그레스를 사용하여 여러 스키마에서 모든 레코드를 선택합니다 (검색)
SQL포스트 그레스를 사용하여 여러 스키마에서 모든 레코드를 선택합니다 (검색)
나는 다음과 같은 몇 가지 스키마와 PostgreSQL 데이터베이스를 가지고 :
My_Database
|-> Schemas
|-> AccountA
|-> AccountB
|-> AccountC
|-> AccountD
|-> AccountE
.
.
.
|-> AccountZ
모든 스키마는 제목이라는 열이있는 테이블라는 제품이있다. 특정 조건으로 모든 스키마의 모든 레코드를 검색하는 SELECT 문을 실행할 수 있는지 알고 싶습니다.
지금까지 발견 된 유일한 방법은 아래와 같은 계정으로 쿼리 계정을 실행하는 것입니다.
SET search_path TO AccountA;
SELECT title FROM product WHERE title ILIKE '%test%';
내가 그들의 이름을 모르거나 얼마나 많은 이들의 존재 때문에 스키마는 동적으로 생성됩니다.
해결법
-
==============================
1.언급 @Denis 같은 상속, 이것은 매우 간단하다. 또한, 포스트 그레스 8.4에 대한 작동합니다. 한계를 생각해야합니다.
언급 @Denis 같은 상속, 이것은 매우 간단하다. 또한, 포스트 그레스 8.4에 대한 작동합니다. 한계를 생각해야합니다.
기본적으로, 당신은 마스터 테이블이 것, 나는 마스터 스키마에 가정 :
CREATE TABLE master.product (title text);
그리고 그것에서 다양한 도식을 상속에있는 다른 모든 테이블은, 아마도 더 많은 지역의 열을 추가 :
CREATE TABLE a.product (product_id serial PRIMARY KEY, col2 text) INHERITS (master.product); CREATE TABLE b.product (product_id serial PRIMARY KEY, col2 text, col3 text) INHERITS (master.product);
기타
테이블은 같은 이름 또는 스키마를 공유 할 필요가 없습니다. 그럼 당신은 하나의 급습 모든 테이블을 조회 할 수 있습니다 :
SELECT title, tableoid::regclass::text AS source FROM master.product WHERE title ILIKE '%test%';
tableoid :: regclass 형 : 텍스트? 즉, 각 행의 소스를 말할 수있는 편리한 방법입니다. 세부:
SQL 바이올린.
-
==============================
2.당신은 기본적으로 노동 조합을 모두 원하는 :
당신은 기본적으로 노동 조합을 모두 원하는 :
SELECT title FROM AccountA.product WHERE title ILIKE '%test%' UNION ALL SELECT title FROM AccountB.product WHERE title ILIKE '%test%' UNION ALL ...;
당신은 제품 테이블이있는 모든 AccountXYZ 스키마의 위치를 동적 SQL 및 카탈로그를 사용하여 그렇게 자동으로 할 수 있습니다.
또한, 유사한 개별 스키마에있는 것과 같은 테이블 및 사용 테이블 상속과 AllAccounts 스키마를 만들 수 있습니다.
어느 쪽도하지만, 데이터에서 어떤 스키마를 알려 않습니다. 전자의 경우, 이것은 쉽게 추가 할 수 충분히이다; 그다지 후자에 당신은 여분의 열을 추가하지 않는 한.
from https://stackoverflow.com/questions/20575610/select-retrieve-all-records-from-multiple-schemas-using-postgres by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL로 변환 SQL Server 쿼리 [중복] (0) | 2020.05.16 |
---|---|
[SQL] MySQL의에서 마지막 레코드를 얻기 (0) | 2020.05.16 |
[SQL] 오류 : 열이 존재하지 않습니다 (0) | 2020.05.15 |
[SQL] 중복 SQL 레코드 삭제 (0) | 2020.05.15 |
[SQL] 나는 SQL 서버에 대해 특정 사용자를 인증하기 위해 ADFS 2.0을 사용할 수 있습니까? (0) | 2020.05.15 |