PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Ajouter le nom de la table à chaque colonne dans un jeu de résultats en SQL ? (Postgres spécifiquement)

Je sais que cette question est un peu ancienne, mais peut-être que quelqu'un trébuchera sur la réponse et cela l'aidera.

La bonne façon de faire ce que vous cherchez est de créer et d'utiliser une vue. Oui, il sera un peu fastidieux de taper tous ces nouveaux noms de colonnes en tant qu'alias, mais s'il y a beaucoup de colonnes, voici une astuce que vous pouvez utiliser pour tirer parti des métadonnées PostgreSQL pour écrire le texte de la vue :

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'exécution de ce produit :

?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]

vous pouvez ensuite copier et exécuter les résultats et le tour est joué :

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]