Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 15/03/2012 17:07:52
- marc.stx
- Membre
requête sur l'intitulé d'un champ
Bonjour,
J'ai une requête qui est sûrement simple, mais je ne sais pas l'écrire.
Soit la table :
CREATE TABLE s_com_eco_empl
(
com ,
p08_pop1564 ,
p08_f1564 ,
p08_act1564 ,
p08_actocc1564 ,
c08_factocc1564 ,
c08_emplt ,
c08_actocc ,
d99_emplt ,
d08_emplt_sal ,
etc...
)
comment faire pour ne sélectionner que les champs qui commencent par "p08" ?
Merci pour votre aide.
Marc
Hors ligne
#2 15/03/2012 17:13:22
- Marc Cousin
- Membre
Re : requête sur l'intitulé d'un champ
Il faut mettre la liste des champs en dur.
Pas d'autre solution.
Marc.
Hors ligne
#3 16/03/2012 11:46:31
- fredo
- Membre
Re : requête sur l'intitulé d'un champ
Bonjour, que pensez vous de cette solution:
SELECT attname FROM pg_attribute WHERE attname LIKE 'p08%' AND attrelid = ( SELECT oid FROM pg_class WHERE relname = 's_com_eco_empl' );
Elle fait appel aux tables système de postgresql et fournit la liste des attributs (nom de colonne) de la table souhaitée.
Par contre, je ne sais pas si on peut ensuite intégrer ce résultat dans une query SQL pur, sans passer par du C (libpq ou libecpg).
Hors ligne
#4 16/03/2012 11:51:48
- Marc Cousin
- Membre
Re : requête sur l'intitulé d'un champ
Oui, la requête fonctionnera pour vous donner la liste des attributs. Vous pouvez aussi passer par la vue information_schema.columns, qui est portable sur plusieurs SGBD.
Par contre, vous ne pourrez pas en faire une liste dynamique. Il faudra que le programme qui génère la requête crée un ordre SQL à partir des noms de colonnes retournés. Vous ne pourrez pas le faire en SQL pur.
Marc.
Hors ligne
#5 16/03/2012 12:38:25
- marc.stx
- Membre
Re : requête sur l'intitulé d'un champ
Bonjour,
SELECT attname FROM pg_attribute WHERE attname LIKE 'p08%' AND attrelid = ( SELECT oid FROM pg_class WHERE relname = 's_com_eco_empl' );
C'est pas exactement ce que je voulais obtenir. Je veux faire afficher les valeurs de certains champs, ceux qui commencent par "p08".
Dans l'esprit, la requête serait :
SELECT p08* FROM s_com_eco_empl
Hors ligne
#6 16/03/2012 12:42:56
- rjuju
- Administrateur
Re : requête sur l'intitulé d'un champ
Ce n'est pas possible "facilement" en sql.
Vous pouvez utiliser cette requête pour créer une vue que vous appellerez ensuite par exemple, ou faire un bout de code pl/pgsql, mais il n'y a aucun moyen simple de le faire, à part taper en dur le nom des champs dans votre requête.
Julien.
https://rjuju.github.io/
Hors ligne
#7 16/03/2012 13:03:12
- marc.stx
- Membre
Re : requête sur l'intitulé d'un champ
C'est bien dommage .
Merci pour vos réponses !
Sauriez vous où il est possible de trouver des ressources ou des cours en ligne sur pl/pgsql ? je ne trouve des éléments que sur pl/SQL qui semble un peu différent comme langage.
Hors ligne
#8 16/03/2012 13:07:44
- rjuju
- Administrateur
Re : requête sur l'intitulé d'un champ
Vous avez la doc en ligne qui est un bonne source d'information :
http://docs.postgresql.fr/9.1/plpgsql.html
Julien.
https://rjuju.github.io/
Hors ligne
#9 16/03/2012 15:50:12
- marc.stx
- Membre
Re : requête sur l'intitulé d'un champ
Merci
Hors ligne
Pages : 1