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

PHP & Base de données Discussion :

Insérer une table dans une autre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut Insérer une table dans une autre
    Bonjour,

    je suis en train de reformater ma base de donnée. J'ai deux Table qui contienne essentiellement les mêmes informations mais de deux sources différentes. Je voudrais les joindres en une seule table car dans le futur je voudrais rajouter plusieurs autres sources, sans avoir besoin de créer de nouvelles tables. J'ai donc besoin d'un champs sourceId

    Comment est-ce que je peux faire pour mettre tous les champs de la tableA dans la tableB, en ajoutant une colonne sourceId=1 et ensuite, mettre tous les champs de la table C (qui sont les mêmes que la tableA) dans la tableB avec un sourceId=2.

    Est ce que quelque chose du genre est faisable


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TableB (champs1, champs2, sourceId) VALUES (SELECT * FROM TableA, 1)
    Merci

  2. #2
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 427
    Points
    2 427
    Billets dans le blog
    27
    Par défaut
    Oui, à condition que les colonnes soient respectées en nombre, type et position !
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    il faut enlever le VALUES :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO maTable(col1, col2, col3)
    SELECT col1, col2, col3 FROM autreTable;

    pour tes deux tables tu peut tous faire en une "seule requête" :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO tableA(sourceid, col1, col2, col3)
    SELECT "tableB", col1, col2, col3 FROM tableB
    UNION
    SELECT "tableC", col1, col2, col3 FROM tableC

    Bien sur pour bien faire il te faut une table qui référence toutes tes sources pour ensuite créer une clé étrangère (sourceid) qui renvoi vers la table de référencement des sources et non comme dans l'exemple une chaîne de caractères.
    une réponse vous a permis d'avancer ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    Merci pour vos réponses rapide,

    J'avais déjà en effet créer une table qui références mes sources, et j'utilise leur index pour mettre dans la table jointe.

    Je présume que pour la valeur d'auto increment des deux tables (qui ont plein de duplicats), je n'ai qu'à laisser tomber ce champs et il va par lui même se remplir?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Si la colonne en auto_increment n'est qu'une colonne technique et ne représente rien au niveau de l'information (nom, prénom ou autre) alors oui tu ne l'importe pas dans la nouvelle table et dans la requête d'insertion tu ne spécifie pas la colonne comme ça ton SGBDR la remplira tout seul.
    une réponse vous a permis d'avancer ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    Merci à tous!

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. insérer une colonne d'une table dans une autre table
    Par identifiant_bidon dans le forum Requêtes
    Réponses: 1
    Dernier message: 01/06/2011, 15h00
  3. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  4. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  5. [MySQL] Insérer des données d'une table dans une autre
    Par bailamos dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/01/2009, 12h12

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