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 :

Remplacer clés étrangères d'une table A en fonction des clés primaires d'une table B


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2014
    Messages : 24
    Points : 21
    Points
    21
    Par défaut Remplacer clés étrangères d'une table A en fonction des clés primaires d'une table B
    Bonjour,

    Ma demande est assez compliquée à expliquer en une phrase du coup je m'excuse pour le titre du topic qui n'est pas très explicite.

    Je dois exporter des données d'une anciennes base de données. Seulement, il y a une différence entre mes tables et les tables de l'ancienne base de données.

    J'ai une table "projet" qui est associée à une table "client" et l'association est faite grâce à une table qui comprend la clé primaire de la table "projet" et la clé primaire de la table "client".

    Mais les clés primaires sont des identifiants auto-incrémentés alors que pour l'ancienne base de données, les identifiants sont tout simplement le nom du projet et le nom du client.
    Ce que je voudrais c'est faire une requête pour pouvoir remplacer les clés étrangères de la tables d'association projet-client en mettant les identifiants auto-incrémentés associés à ces noms de projets et nom de clients.

    Le hic c'est que je ne vois pas comment faire
    Je pense que cette requête doit être composés de plusieurs requêtes si quelqu'un pouvait me donner un coup de main ça serait super !

    Cordialement,

  2. #2
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2014
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    Petit up, je ne sais vraiment pas par quoi commencer.

  3. #3
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Citation Envoyé par arthur.moreau Voir le message
    Mais les clés primaires sont des identifiants auto-incrémentés alors que pour l'ancienne base de données, les identifiants sont tout simplement le nom du projet et le nom du client.
    C'est à dire ?
    Vous pourriez expliquer comment elles sont réellement construites ?

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Bonjour,

    Effectivement le choix des clé primaires n'était pas heureux. Une clé primaire doit respecter deux règles, elle doit être invariante et non significative. Des clés auto-incrémentées sont un bon choix.

    Avec une grande BDD, votre problème est long à résoudre. Il est difficile de vous aider sans vous poser des questions comme :

    Combien avez-vous de lignes dans chaque table ?

    Les tables sont-elles en relation avec d'autres tables non mentionnées dans votre message ? Si vous avez un schéma relationnel se serait l'idéal.

    L'ancienne BDD sera-t-elle détruite pour être remplacée par la nouvelle ?

    Comment l'ancien système fait-il pour ne pas avoir de doublon sur la clé primaire 'nom client'. Vous ne devez pas avoir 1 seul Martin et 1 seul Durand ?


    L'écriture d'une procédure est généralement requise pour vote problème, mais on ne peut pas utiliser les curseurs sous MySql pour faire des mises à jour. Cette lacune de MySql va corser le problème.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2014
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    bonjour et merci pour vos réponses,

    J'ai résolu mon problème entre temps.

    J'ai exporté mes enregistrements dans des fichiers et j'utilise un script php pour faire mes insertions dans mes tables
    C'est pas très jolie mais ça fonctionne...

    Encore merci pour le temps que vous m'avez consacré.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tronquer une table liée par des clés étrangères
    Par hazem2410 dans le forum Oracle
    Réponses: 11
    Dernier message: 10/11/2010, 15h15
  2. modéliser une table mapping ayant des clés étrangères sur des vues
    Par touftouf57 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 19/06/2010, 02h04
  3. Réponses: 6
    Dernier message: 08/11/2008, 15h37
  4. Réponses: 5
    Dernier message: 05/10/2006, 19h07

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