sql >> Database teknologi >  >> RDS >> PostgreSQL

Vælg (hent) alle poster fra flere skemaer ved hjælp af Postgres

Med arv som @Denis nævnte, ville dette være meget enkelt. Virker også til Postgres 8.4. Sørg for at overveje begrænsningerne .

Grundlæggende ville du have en mastertabel, formoder jeg i et masterskema:

CREATE TABLE master.product (title text);

Og alle andre tabeller i forskellige skemaer arver fra det, eventuelt tilføje flere lokale kolonner:

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

osv.

Tabellerne behøver ikke at dele det samme navn eller skema.
Så kan du forespørge alle tabeller i et enkelt hug:

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

tableoid::regclass::text ?
Det er en praktisk måde at fortælle kilden til hver række på. Detaljer:

  • Find ud af hvilket skema baseret på tabelværdier

SQL Fiddle.



  1. Forskelle mellem SQL &NoSQL-databaser - MySQL &MongoDB-sammenligning

  2. Anbringelse af markørdata i et array

  3. Fejl i SQL Server under import af CSV-fil på trods af at varchar(MAX) blev brugt til hver kolonne

  4. Heroku Rails 4 kunne ikke oprette forbindelse til serveren:forbindelsen blev afvist