|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 10 ![]() |
bonjour à tous,
j'ai une base postgres avec environ 60 tables. Je recherche la table dans laquelle j'ai un champ précis. Existe-t-il une commande sql du genre 'SELECT mon_champ from *' qui pourrait faire cela? Est-ce possible de faire une recherche de ce type et d'avoir le nom de la table en sortie? Merci |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Regardez les tables system
|
|
|
00
|
|
|
#3 |
|
Membre extrêmement actif
![]() |
Salut,
je ne crois pas que ce soit possible, puisqu'un même nom de champ peut se triouver dans plusieurs tables.... |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 10 ![]() |
OK j'ai affiché mes tables system, mais je ne vois pas comment cela m'aide à trouver le champ...
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
Tous les SGBD sont sensés avoir un catalogue qui répertorie tous les objets de la BD. Le nom des tables "systèmes" et l'organisation dépend du SGBD. Mais typiquement, tu as des tables qui s'appellent (par exemple) : - SYSTABLES (TABLE_NAME, ...) : la table qui répertorie toutes les tables - SYSCOLUMNS (TABLE_NAME, COLUMN_NAME, ...) : la table qui répertorie toutes les colonnes de toutes les tables. Tu es sous quel SGBD ?
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#7 |
|
Membre extrêmement actif
![]() |
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : août 2008 Messages : 6 ![]() |
Salut,
Je ne connais pas très bien postgres, mais pour ceux que ca interesse voici comment faire sous Oracle : -- récupérer l'object ID correspondant à une table : select object_id from all_objects where object_name = '<nom de la table>' and object_type = 'TABLE' -- récupérer une colonne de la table : select * from sys.col$ where obj# = <object ID récupéré précédemment> and name = '<Nom colonne>' A partir de ca, on peu récupérer tous les object ID des tables qui contiennent un champ d'un nom donné, et ainsi voir toutes ces tables. voila. Comme le dit pacmann, il doit très probablement exister des tables système dans ta base de données qui référence les objets qu'elle contient, y compris les tables et les colonnes. Donc je te conseille de chercher sur la doc des tables systèmes si de telles tables existent Bon courage |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : janvier 2006 Messages : 227 ![]() |
bonsoir,
Code :
SELECT relname FROM pg_class t JOIN pg_attribute c ON t.oid=c.attrelid WHERE attname='nom_colonne' |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : juin 2008 Messages : 10 ![]() |
Merci Xavier-Pierre,
c'est la commande idéale pour cette recherche.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com