SQL : transfert de colonnes entre tables

Bonjour,

pour simplifier mon pb (de newbie) est le suivant :
J'ai 2 tables avec leurs colonnes respectives (disons table1 et table 2) comment on fais pour créer une table 3 avec par ex les 3 premieres colonnes de table1 et 2 col de table2? c koi l'instruction ?
ou, autre solution mettre une colonne de table2 à la place d'une colonne de table1 ?
J'ai besoin d'un coup de pouce là SVP !
Merci

PS: je précise que je bosse dans M. Access

16 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Exemple:

    INSERT INTO table3 (col1, col2, col3)
    SELECT table1.col5, table1.col6, table2.col8
    FROM table1, table2
    WHERE table1.col1 = table2.col1
    1. Contributeur
      Ca marche sous ACCESS?
      Tu es sur que le INTO est direct apres le SELECT, intuitivement je l'aurais colle a la toute fin...mais ca fait tellement longtemps...

      .  .  Bon!Si on m'empeche de travailler
      \_/  Je ne me debattrai pas!
    2. Modérateur
      @teeboahum... sous Access je ne sais pas.
      En tous cas sous SQL Server 7 ça tourne.
  2. salut,
    d'abord as-tu au moins un champ commun dans tes 2 tables ?
    par exemple une clé_primaire dans table 1 cle_primaire_table1 dans table2
    Si oui tu fais une requete creation de table en jointant les 2 tables tu descends les champs que tu veux dans ta nouvelle tabe 2 puis tu executes

    A+
    Essayer.........des fois ça marche............
    1. Contributeur
      Salut, je ne sais pas si ACCESS les prend, a verifier, mais un SELECT blablabla INTO ca ne marche pas?

      .  .  Bon!Si on m'empeche de travailler
      \_/  Je ne me debattrai pas!
      1. en fait g viens d'essayer avec
        INSERT INTO blabla SELECT blablabla FROM blablabla;

        ce qui est pas mal sauf que bien sûr ca ne se mets pas dans les les premières lignes du tableau mais à la fin...

        mobile75>> comment on fait pour indiquer les clé primaire, g pas trouvé ? à part les mettre à la main a chaque fois :( enfin bref si tu avais un code en ex ton idée, ca serait bien ;)

        teebo>> heu... select... into ?? marche comment ca ? j'y arrive pas...

        sebsauvage>>v essayez en rajoutant le where... ;)

        merci de vos répones en tout cas
        1. Contributeur
          Arf, une de mes boulettes preferees, t'inquietes pas j'ai la tete ailleurs, desole pour cette fausse piste, ecoute Sebsauvage ca t'avancera beaucoup plus :-D

          .  .  Bon!Si on m'empeche de travailler
          \_/  Je ne me debattrai pas!
      2. avec le where c nickel ! merci (+++)

        PS: Merci au webmaster pour son cours sur le SQL, j'ai appris bp sur ce site.
        1. salut
          je confirme la version de seb
          Insert into table3 (col1,col2)
          select ...... from.............. where ........
          


          concernant les clés primaire : faire un code vba ( gérant aussi les erreurs ) pour cela puis le faire tourner pour 2 à 5 tables je n'en vois pas l'interet autant le faire à la main
          si tu en avais une bonne quarantaine je pense que cela vaudrait le coup en passant un champ de la table comme variable

          A+
          Essayer.........des fois ça marche............
          1. alors... J'ai essayer avec le where pour récuperer les colones de 3 tables diff dans une quatrieme, ok sauf que j'ai beaucoup trop de lignes, doit y avoir un truc a faire au niveau de relations...

            pour le coup de la clé primaire c que le but est qu'on ne touche plus à access ! les personnes qui se serviront de ca n'y connaissent rien...
            1. g taper ca :
              INSERT INTO convoi ( machine, DATE1, H1, Min1, DATE2, H2, Min2, DATE3, H3, Min3 )
              SELECT convoyeur1.Machine, convoyeur1.DATE, convoyeur1.H, convoyeur1.MIN, convoyeur2.DATE, convoyeur2.H, convoyeur2.MIN, convoyeur3.DATE, convoyeur3.H, convoyeur3.MIN
              FROM convoyeur1, convoyeur2, convoyeur3;


              alors que si g fais à la suite :
              INSERT INTO convoi ( Machine, date1, temps1, min1 )
              SELECT convoyeur1.Machine, convoyeur1.DATE, convoyeur1.H, convoyeur1.MIN
              FROM convoyeur1;

              puis
              INSERT INTO convoi ( Machine2, date2, temps2, MIN2 )
              SELECT convoyeur2.Machine, convoyeur2.DATE, convoyeur2.H, convoyeur2.MIN
              FROM convoyeur2;

              et
              INSERT INTO convoi ( Machine3, date3, temps3, MIN3 )
              SELECT convoyeur3.Machine, convoyeur3.DATE, convoyeur3.H, convoyeur3.MIN
              FROM convoyeur3;

              c niquel le seul pb c que les 2 dernieres insertions se font a chaque fois en bas du tablo...
              1. tes 3 tables ont-elles une relations de 1:1 ou 1:n entre elles ?

                si tu as 1:n cela pourrais expliquer le nombre important de lignes

                Precises un peu svp

                A+
                Essayer.........des fois ça marche............
                1. pour le moment elles ont aucunes relations...
                  1. Modérateur
                    ah ben vi là forcément c'est moins pratique :)
                2. et il y a pas vraiment moyens de les lier... là c surtout un pb de présentation g dirais...
                  1. comme dit seb

                    ah ben vi là forcément c'est moins pratique :)
                    

                    et si en plus tu peux pas les lier entre elles alors.....
                    t'es sur que t'as pas un champ identique dans tes 3 tables ex: N° de commande ou Nom ou code postal etc ...etc ....
                    parce que sinon ...
                    c'est comme melanger les torchons et les serviettes.......
                    A+
                    Essayer.........des fois ça marche............
                    1. -up- ;o)

                      pas de solutions pour transferer des colonnes entre tables ?
                      1. Modérateur
                        Ben si tu n'a aucun moyen de lier les informations de tes 3 tables entre elles, ça ne sert à rien.
                        Tu obtiendra juste un beau produit cartésien... :-/
                    2. Et avec le truc des index c pas possible ? (g demande car g pas pigé comment on se servait de ce bidule...)