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

Requêtes MySQL Discussion :

Récupérer les données liées à partir d'un nom de table


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Par défaut Récupérer les données liées à partir d'un nom de table
    Bonjour à tous !

    Je n'ai pas trouvé de titre plus explicite pour ma demande.
    Je suis 'débutant' en MySQL et me heurte à un petit problème.

    Petite explication :
    J'ai dans ma base toute une flopée de tables, dont celle-ci :
    - liste_table (id_liste_table autoincrement int, nomTable varChar, idNomTable int, etc)

    NomTable contient le nom physique d'une table de la base (peut être n noms différents).

    idNomTable correspond à l'id auto increment de cette fameuse 'NomTable'.

    Ma problématique est celle-ci : je dois pouvoir faire une jointure sur 'nomTable' à partir de 'iDNomTable' et remonter certaines informations (différentes en fonction de NomTable).

    J'ai pensé à faire une flopée de jointures sur les n tables différentes, avec un énorme 'CASE' dans ma requête en fonction de la table.
    (Pas élégant du tout ...)

    J'ai pensé à creuser aussi du côté des tables systèmes MySQL, mais je ne sais pas si je vais trouver quelque chose dans ce sens.

    Pas trouvé d'opérateur 'd'indirection' non plus en MySQL.

    Je me tourne donc vers vous pour savoir si quelqu'un avait une idée sur 'comment aborder ce problème'.

    Merci d'avance !

    Ghtay

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    tu peux le faire avec un requête préparée que tu exécuteras à partir d'une chaine dans laquelle tu concatèneras le nom de ta table...

    c'est le meilleur moyen de faire des requêtes avec des paramètres autre par que dans le where...

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Par défaut
    Arfouille .
    En gros je remonte mon paquet de lignes et je construis ma requête pour chaque ligne remontée ?

    Le hic est que, admettons que le nombre de lignes remontées est de 30k+, ça fait un peu brutal je trouve ...

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    tu construis dynamiquement ta requête avec un concact() comme tu pourrais le faire côté php (ou autre langage appelant) par exemple...

    genre:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @r=concat('select * from `',@nomtable,'`');
    prepare exe from @r;
    execute exe;
    deallocate prepare exe;
    ou via une procédure stockée:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    delimiter $$
    create procédure lire(in nom varchar(64))
    begin
      declare r varchar(255) default concat('select * from `',nom,'`');
      prepare exe from @r;
      execute exe;
      deallocate prepare exe;
    end$$
    delimiter ;
     
    #appel
    call lire('tatable');

    Après faut voir ce que tu veux automatiser...

    Tu peux faire un curseur dans une autre procédure (sous réserve d'un traitement générique comme ici) qui appelle cette procédure sur chaque nom de table trouvé dans le select qui définira le curseur...

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Étant donné qu'il existe déjà information_schema qui recense, entre autres, toutes les tables de toutes les bases de données du serveur MySQL, quel besoin justifie une table qui recense des tables ?

    De plus, je n'ai rien compris à votre explication !

    Un exemple concret serait bienvenu.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [MySQL] Récupérer les données liées à une checkbox
    Par legeek31 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/10/2014, 20h29
  2. Récupérer les données liées à un fournisseur
    Par daliloux dans le forum Excel
    Réponses: 3
    Dernier message: 01/10/2010, 11h42
  3. Réponses: 5
    Dernier message: 21/07/2010, 09h01
  4. [MySQL] récupérer les donnes d'une session pour afficher la table?
    Par keokaz dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/01/2010, 20h53
  5. Récupérer les données BMP à partir d'une DLL
    Par KRis dans le forum Langage
    Réponses: 23
    Dernier message: 17/10/2008, 10h28

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