Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/02/2006, 10h43   #1
Invité régulier
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 8
Points : 8
Par défaut [System]Comment récupérer noms des tables d'une BDD DB2?

Bonjour,

Excusez moi si je suis loin d'être bon en BDD, mais j'aimerais savoir comment je pourrais récupérer le nom de toutes mes tables de ma BDD en faisant un SELECT.

Merci d'avance
Mynautor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2006, 11h29   #2
Nouveau Membre du Club
 
Inscription : décembre 2005
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 25
Points : 28
Points : 28
Tu devrais trouver ton bonheur dans la table SYSTABLES
Gwellañ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 17h20   #3
Invité régulier
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 8
Points : 8
oui effectivement, un ptit "SELECT * FROM SYSIBM.SYSTABLES" marche nikel.
J'aurais bien une autre question.
En fait je travail sur Websphere Commerce et la Base de données qui est livré avec...
Faudrait que je fasse une requête comme suit :

Select <noms des tables> where <la valeur d'un élément dans une des colonnes de la bdd> = <une valeur>

Une solution?
Je suis vraiment largué en bdd c'est dommage...
Mynautor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2006, 17h45   #4
Nouveau Membre du Club
 
Inscription : décembre 2005
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 25
Points : 28
Points : 28
Code :
1
2
3
SELECT TABLE_NAME
FROM SYSCOLUMNS 
WHERE COLUMN_NAME = UNEVALEUR
Et UNEVALEUR peut -être remplacée par :
Code :
1
2
3
SELECT NOMCOL
FROM NOMTABLE
WHERE COL1 = VAL1
Gwellañ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 11h01   #5
Invité régulier
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 8
Points : 8
En fait mon problème est un peu + compliqué (ou pas), mais la solution que tu me donnes ne correspond pas à mon problème.

Mon problème est le suivant:

J'ai besoin de trouver toutes les tables de ma base de données qui contiendrait dans une de leurs colonnes un élément égale à une valeur.
Exemple : soit le nombre 5689, je souhaite savoir le nom des tables qui contiennent cette valeur dans une de leurs colonnes.
Comment puis-je formé la requête? Est ce possible?
Mynautor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 11h41   #6
Expert Confirmé
 
Avatar de neguib
 
Inscription : mai 2005
Messages : 3 633
Détails du profil
Informations personnelles :
Âge : 51

Informations forums :
Inscription : mai 2005
Messages : 3 633
Points : 3 967
Points : 3 967
Il te faut donc recupérer le nom de toutes les colonnes de la table SYSCOLUMNS pour les itérer dans la clause WHERE
__________________
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
neguib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 11h56   #7
Invité régulier
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 8
Points : 8
concrètement sa donne quoi?
Mynautor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 13h16   #8
Expert Confirmé
 
Avatar de neguib
 
Inscription : mai 2005
Messages : 3 633
Détails du profil
Informations personnelles :
Âge : 51

Informations forums :
Inscription : mai 2005
Messages : 3 633
Points : 3 967
Points : 3 967
Citation:
Envoyé par Mynautor
concrètement sa donne quoi?
Collègue çà te donne le droit concrètement de consulter tes cours de SQL ou de t'adresser au forum dédié au SQL peut être
J'ai juste le sentiment que ta problématique n'est pas spécifique à DB2 mais je peux me tromper
J'avoue que je n'ai pas non plus vraiment le temps de te pondre la requête car je bosse sur tout autre chose à l'heure où je t'ecris, désolé pour mes pistes "non concrètes"
__________________
Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles
neguib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 14h46   #9
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Cela me parait difficile en SQL pur. En fait tu dois récupérer la liste des tables. ça tu l'as déjà. ensuite comme Neguib te l'a dit, tu dois pour chaque table récpérer dans la table SysColumns le nom des différentes colonnes. Je pense de mémoire que c'est également la que tu pourra récupérer le type. En effet tu ne pourra rechercher dans la table que sur les colonnes qui ont le même typ que ton paramêtre. Donc pour chaque colonne ainsi identifiée, tu pourras réaliser ta recherche avec un count par exemple. Essaie de faire un seul Where pour l'ensemble des colonnes d'un même tables. Je ne vois pas comment tu pourrais éviter de faire cela dans une procédure stockée.

Citation:
Envoyé par Mynautor
J'ai été clair, je ne m'y connais pas trop en SGBD et j'ai pas le temps de me plonger dans la doc actuellement, je sais tu t'en fous...
Maintenant si c'est pour me dire que tu as pas le temps, merci pour rien 8)
Ne pense pas que les membres de l'équipe ne sont pas interèssés par tes problèmes mais nous sommes tous bénévoles et avons aussi une activité professionnelle prenante. Nous répondons toujours de notre mieux dans les temps dont nous disposons à un moment prècis. Nous sommes aussi en droits d'espérer que de votre côté vous mettiez tout en oeuvre pour trouver la solution à votre problème et pas simplement d'attendre que la solution tombe du ciel.
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 15h04   #10
Invité régulier
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 8
Points : 8
Merci
Mynautor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 15h41   #11
Nouveau Membre du Club
 
Inscription : décembre 2005
Messages : 25
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 25
Points : 28
Points : 28
Si tu as 2 tables de 2 colonnes dans ta base et qu'en plus elles sont pas trop grosses ça devrait le faire. Dans le cas contraire tu risques de te faire assassiner par ton admin...
Par ce que si j'ai bien compris cette fois-ci ce que tu veux c'est que ta requête te dise "c'est dans la colonne toto de la table titi que j'ai trouvé la valeur 1234".
C'est possible techniquement mais c'est sûrement pas une bonne idée.
Gwellañ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2006, 13h12   #12
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 096
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 096
Points : 1 704
Points : 1 704
Citation:
Envoyé par Mynautor
...

J'ai besoin de trouver toutes les tables de ma base de données qui contiendrait dans une de leurs colonnes un élément égale à une valeur.
Exemple : soit le nombre 5689, je souhaite savoir le nom des tables qui contiennent cette valeur dans une de leurs colonnes.
Comment puis-je formé la requête? Est ce possible?
Quel est l'interêt de cette requête ?
A quelle fonctionnalité doit-elle répondre ?
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2006, 14h13   #13
Invité régulier
 
Inscription : mai 2004
Messages : 69
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 69
Points : 8
Points : 8
Et bien tout simplement, j'ai une modification a faire pour un client, une maintenant si tu préfères, et j'ai repris un site de fou en websphere commerce, et je ne sais pas dans quelles tables "taper"... alors je cherche directement une valeur dans les tables.
la bdd comporte + de 200 tables ;D
Mynautor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h24.


 
 
 
 
Partenaires

Hébergement Web