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 :

Requête dans une table dont le nom est dans le champ d'une autre table


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Requête dans une table dont le nom est dans le champ d'une autre table
    Bonjour à tous,

    Voici ma problématique :

    Je dispose de X+1 tables.
    L'une des tables (la X+1ème par exemple) stocke dans un champ le nom de l'une des X premières tables, et je dois requêter, selon ce champ, la bonne table parmi les X premières.

    Je tâche d'être encore plus clair :

    Soit la table X+1ème.
    L'enregistrement 1 possède "toto" dans le champ "table_cible".
    L'enregistrement 2 possède "tata" dans le champ "table_cible".
    Je veux aller chercher un enregistrement dans la table cible, selon le résultat du champ "table_cible", le tout dans une seule et unique requête (une seule requête me donnant à la fois la valeur du champ "table_cible" et l'enregistrement que je recherche dans la table cible elle-même, sans que je sache son nom avant le début de ma requête).

    J'ai essayé ce genre de requête sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT table_source.cible AS alias_table_cible, alias_table_cible.id FROM table_source
    LEFT JOIN alias_table_cible ON alias_table_cible.champ_commun = table_source.champ_commun
    Mais cela ne fonctionne pas, mysql me répondant - je m'y attendais - que la table dénommée "alias_table_cible" n'existe pas. Forcément puisque c'était un alias, mais j'espérais un peu que l'alias soit traduit dans ma requête...

    Pourriez-vous me dire comment je peux parvenir à mes fins ?

    Merci d'avance !

    Quentin

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Bonjour,

    Il faut certainement regarder du côté des commandes préparées.
    La documentation de MySQL explique ça ici.

    Désolé de ne pas pouvoir t'aider plus, je n'ai jamais essayé personnellement .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci ced de ta réponse.
    Malheureusement il semble que les commandes préparées ne répondront pas à mon besoin, car elles diffèrent en fait l'exécution d'une requête jusqu'au moment où certains variables seront connues, mais en ce qui me concerne je ne connaitrai ma variable inconnue (le nom de la table cible) qu'en exécutant la requête sur la variable source.
    Donc deux requêtes distinctes, et je dois n'en faire qu'une seule !

    Quentin

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Et en passant par une procédure stockée ?

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Et bien, tu vas me trouver difficile, mais cela ne changera rien au problème tant que je ne suis pas capable d'utiliser au sein d'une même requête pour nom de table le contenu du champ d'une autre table.

    Je ne suis pas très spécialiste de la procédure stockée, mais si j'en crois mes connaissances, tout ce que cela apportera à mon problème est un petit gain de temps car mes deux requêtes successives (la première pour obtenir le nom de la table utilisée dans la deuxième) seront exécutées directement au niveau du serveur sans aller-retours inutiles, et je ne rapatrierai que le résultat de la deuxième requête. Gain de temps intéressant mais... insuffisant au niveau performance car il reste toujours deux requêtes...

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/11/2013, 14h20
  2. Requete SQL sur une table dont le nom est dans une autre table
    Par orangepresse dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/09/2007, 13h32
  3. Comment appeler une méthode dont le nom est dans un string?
    Par Ireon dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 13/04/2007, 17h22
  4. Accéder à une table dont le nom est dans une table
    Par claralavraie dans le forum Oracle
    Réponses: 7
    Dernier message: 26/12/2006, 15h51
  5. Réponses: 3
    Dernier message: 05/10/2006, 18h52

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