sql >> Databáze >  >> RDS >> PostgreSQL

Vyberte (načtěte) všechny záznamy z více schémat pomocí Postgres

S dědičností jak zmínil @Denis, bylo by to velmi jednoduché. Funguje také pro Postgres 8.4. Nezapomeňte zvážit omezení .

V podstatě byste měli hlavní tabulku, předpokládám, že v hlavním schématu:

CREATE TABLE master.product (title text);

A všechny ostatní tabulky v různých schématech dědí z něj, případně přidáním dalších lokálních sloupců:

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);

atd.

Tabulky nemusí mít stejný název nebo schéma.
Poté můžete dotazovat se na všechny tabulky na jeden zátah:

SELECT title, tableoid::regclass::text AS source
FROM   master.product
WHERE  title ILIKE '%test%';

tableoid::regclass::text ?
To je praktický způsob, jak sdělit zdroj každého řádku. Podrobnosti:

  • Zjistěte, které schéma na základě hodnot tabulky

SQL Fiddle.



  1. Jak přidat 'ON DELETE CASCADE' do příkazu ALTER TABLE

  2. Ladění výkonu PL/SQL pro dotazy typu LIKE '%...%' se zástupnými znaky

  3. SQL Server SHOWPLAN_ALL

  4. Jak vytvořit adresář v Oracle?