Intégrer une liste de valeur dans une requête [Fermé]

Signaler
Messages postés
443
Date d'inscription
mercredi 23 décembre 2009
Statut
Membre
Dernière intervention
26 avril 2020
-
Messages postés
443
Date d'inscription
mercredi 23 décembre 2009
Statut
Membre
Dernière intervention
26 avril 2020
-
Bonjour,

Je recherche à transformer la requête suivante de manière à pouvoir lister les colonnes de plusieurs tables et non une seule.

SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'schema'
  AND table_name   = 'table"

Le code ci dessus fonctionne

je souhaiterai pouvoir écrire quelque chose du genre :
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'schema'
  AND table_name   = select distinct tablename from tableliste

Bien-sur ce code ne fonctionne pas mais c'est pour comprendre l'idée
et ici tableliste est un table que je possède et qui reprend une liste de toutes mes tables

Auriez vous une idée ?

Je travaille sous PostGreSQL

Cordialement

3 réponses

Messages postés
29221
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2020
2 693
Bonjour,

Question bête.... Ne suffirait-il pas de retirer le "AND" ?
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'schema'

Messages postés
443
Date d'inscription
mercredi 23 décembre 2009
Statut
Membre
Dernière intervention
26 avril 2020
34
"Question bête.... Ne suffirait-il pas de retirer le "AND" ? "

La question n'est pas si bête ^^ Et oui en soit ça aurait pu marcher mais je suis dans un cas un peu particulier :
Sous mon schema j'ai 266 tables mais il y en a seulement 79 dont je veux la liste.
Dans le cas ou je retirerai le AND il faudrait pouvoir filtrer les table par leur suffixe dans leur nom en effet celles qui m’intéressent commencent toutes par 'cf_nomdetable'
ça peut etre une autre piste mais je n'ai aucune idée de comment filtrer cela :s

EDIT :
Je viens de trouver il faut ecrire
SELECT table_name ,column_name
FROM information_schema.columns
WHERE table_schema = 'schema'
  AND table_name   ~~ 'cf_%'


Et dire que ça fait quelque jour que je rame pour trouver qqchose de si simple --'

Du coup je me permet d'ajouter une contrainte supplémentaire car c'est vers où je dois me diriger :
il faudrait que j'utilise les informations de cette table ou alors la compléter(qui contient je le rappel les nom d'autre table et les valeur des colonne associée) pour obtenir les valeur distinctes prises par chacunes des colonnes de chaques table.
Du style :
Select distinct 'nomdunecolonne' From 'table'

Je ne sais pas comment l'expliquer mais en gros il faudrait appliquer ce code a chaque enregistrement retourné par la précédente requete où table est le nom d'une des table trouvé grâce à la requête et nomdunecolonne est le le nom de la colonne associé
Messages postés
29221
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 août 2020
2 693
Dans ce cas, tu dois pouvoir utiliser un LIKE
AND table_name   LIKE 'cf_nomdetable%'


(ça fait parti des "fonctions" de base à connaitre en SQL ... LIKE , IN , NOT .. )
Messages postés
443
Date d'inscription
mercredi 23 décembre 2009
Statut
Membre
Dernière intervention
26 avril 2020
34
mince j'ai édité mon post en même temps que vous avez répondu ...
du coup cf : au dessus
Messages postés
443
Date d'inscription
mercredi 23 décembre 2009
Statut
Membre
Dernière intervention
26 avril 2020
34
Du coup pour récapituler je recherche comment mettre en place une sorte de requête itérative qui sur chaque ligne d'une table m'applique ce pattern
Select distinct 'Cn' From 'Tn'
et qui me sort des valeur Vn
Pour imager ça me crearai une sorte d'arborescence :
La table A c'est celle que j'ai pu crée avec la requête des 1ers messages et le B c'est celle que je veux en appliquant le select distinct ...



En se limitant à l'utilisation de postgresql