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

Langage SQL Discussion :

Copier des données de deux tables liées (en cascade)


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 50
    Points : 33
    Points
    33
    Par défaut Copier des données de deux tables liées (en cascade)
    Bonjour,

    J'ai un souci, peut être simple, mais où je ne trouve pas la solution.

    J'ai 3 tables dans mysql. Appelons les tA, tB, tC.
    J'ai une entrée A dans tA, 2 entrées B1 et B2 dans tB et 3 entrées C1, C2 et C3 dans tC.

    Les entrées B sont liées à A par l'id de A (clé étrangère en qq sorte), et les entrées C sont liées à B avec C1 et C2 liées à B1 et C3 liées à B2.

    Je veux simplement copier toutes ces données et me retrouver avec :
    • A' est la copie de A
    • B1' est la copie de B1 et B2' est la copie de B2 et elles sont liées à A' par l'id d'A'.
    • C1' est la copie de C1, C2' est la copie de C2 et elles sont liées à B1' et enfin C3' est la copie de C3 est est liée à B2'.


    J'ai commencé par copier A en A'. Ensuite, j'ai copié les entrées B en les liant à A'.

    Ensuite, j'ai fait une une requête avec une jointure pour copier les entrées C. Ca marche presque sauf que je me retrouve avec les bons C' mais liées aux entrées B et non pas B' !!!!

    J'ai essayé d'autres trucs qui marchent pas. Et je suis un peu coincé. La seule solution que j'ai trouvé est de copier les entrées B une par une, et entre chaque copie, je récupère l'id de la nouvelle entrée B', je copie les entrées C liées à la B en cours pour les linker à B'. Une fois fini, je passe à l'entrée B suivante.

    Ma question : ça me semble basique comme question, donc n' y a t il pas un moyen propre de faire une reqûete en cascade qui me fasse la copie des données des deux tables ??

    Je suis pas un spécialiste sql donc je dois rater certains trucs.

    Merci d'avance.

    Bastien

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 50
    Points : 33
    Points
    33
    Par défaut Faire une boucle
    Je me réponds à moi même suite à 2 réponses obtenues ailleurs.

    La solution indiquée dans ma question semble être la plus simple ou peut etre la seule...

    Donc faire une boucle pour copier chaque entrée B et dans cette boucle, copier les entrées C liées à l'entrée B en cours et lier les copies de C à l'entrée B' créée (on récupère l'id de B' avec un last_insert_id() ).

    Si ça peut aider qq qui se pose la même question !

    Bonne soirée à tous

    Bastien

    PS : il me semble quand même qu'on peut peut être utiliser les triggers pour faire cette requête. Si certains ont la réponse...

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

Discussions similaires

  1. insérer des données dans deux tables liées
    Par joprog dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/12/2010, 18h24
  2. copier des données entre deux table access (vb2005)
    Par solid_sneak06 dans le forum VB.NET
    Réponses: 9
    Dernier message: 12/07/2008, 13h20
  3. Transferer a la volée des données entre deux tables
    Par schwinny dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 08h50
  4. pb de relation des données de deux tables
    Par Skizo dans le forum Access
    Réponses: 3
    Dernier message: 02/06/2006, 17h00
  5. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01

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