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

Anteporre il nome della tabella a ciascuna colonna in un set di risultati in SQL? (Postgres in particolare)

So che questa domanda è un po' vecchia, ma forse qualcuno inciamperà nella risposta e questo lo aiuterà.

Il modo corretto per fare ciò che stai cercando è creare e utilizzare una vista. Sì, sarà un po' noioso una volta digitare tutti quei nuovi nomi di colonna come alias, ma se ci sono molte colonne ecco un trucco che puoi usare per sfruttare i metadati di PostgreSQL per scrivere il testo della vista:

select 'CREATE OR REPLACE VIEW people AS SELECT ' || 
(select string_agg(column_name || ' AS person_' || column_name, ', ')
from information_schema.columns
where table_name = 'person'
group by table_name) || 
' FROM person;';

l'esecuzione di questo produce:

?column?                                                 
------------------------------------------------------------------------------------------------------------- 
CREATE OR REPLACE VIEW people AS SELECT last_name AS person_last_name, first_name AS person_first_name FROM person; 

1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]
[Executed: 4/21/12 2:05:21 PM EDT ] [Execution: 9/ms]

puoi quindi copiare ed eseguire i risultati e voilà:

select * from people;

 person_last_name     person_first_name    
 -------------------  -------------------- 
 Melvoin              Wendy                
 Coleman              Lisa                 

 2 record(s) selected [Fetch MetaData: 1/ms] [Fetch Data: 0/ms]