IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DB2 Discussion :

[System]Comment récupérer noms des tables d'une BDD DB2?


Sujet :

DB2

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 37
    Points
    37
    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

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    Tu devrais trouver ton bonheur dans la table SYSTABLES

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 37
    Points
    37
    Par défaut
    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...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TABLE_NAME
    FROM SYSCOLUMNS 
    WHERE COLUMN_NAME = UNEVALEUR
    Et UNEVALEUR peut -être remplacée par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NOMCOL
    FROM NOMTABLE
    WHERE COL1 = VAL1

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 37
    Points
    37
    Par défaut
    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?

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Il te faut donc recupérer le nom de toutes les colonnes de la table SYSCOLUMNS pour les itérer dans la clause WHERE

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 37
    Points
    37
    Par défaut
    concrètement sa donne quoi?

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    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"

  9. #9
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    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.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 37
    Points
    37
    Par défaut
    Merci

  11. #11
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    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.

  12. #12
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    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 ?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Points : 37
    Points
    37
    Par défaut
    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

Discussions similaires

  1. Liste des noms des tables d'une BDD
    Par SISGI dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/06/2013, 12h43
  2. Récupérer l'alias ou le nom des tables dans une jointure
    Par Morgoth777 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/07/2008, 10h45
  3. Comment dentifier le nom des tables d'une base ?
    Par cunimb dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/06/2008, 17h28
  4. Réponses: 11
    Dernier message: 12/05/2006, 17h18
  5. Réponses: 2
    Dernier message: 23/06/2005, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo