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 :

transfert d'enregistrements


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut transfert d'enregistrements
    bonjour,
    je dispose de 2 tables ayant exactement la meme structure et je voudrais transferer un enregistrement particulier de l'une vers l'autre, comment m'y prendre de facon simple ?
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Insert into table_dest (champ1, champ2, ..., champn)
    Select champ1,champ2, ...., champn
    from table_source
    where ..;
    Ou si les tables sont vraiement identiques, avec le même nombre de champs et les champs dans le même ordre
    code]Insert into table_dest
    Select *
    from table_source
    where ..;[/code]
    Mais je déconseille cette dernière solution, car elle foire dès que les champs ne sont plus dans le même ordre, ou que la table source a un champ de plus que la table destination ou autre.

    Evidement dans where... tu mets les la condition qui va bien pour sélection ner dans table_source l'enregistement de tes rêves.

    Attention, si dans la table_dest il y a des champs auto-incrémenté, il faudra désactiver l'auto incrément avant l'insert et le réactiver après.
    A+
    Soazig

  3. #3
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Points : 65
    Points
    65
    Par défaut
    La plus simpliste, ne marche que si :
    1> Meme nombre de champs
    2 > Meme ordre de déclaration des champs dans les CREATE
    3 > Les types des champs doivent etre compatibles

    NB: Les champs n'ont pas besoin d'avoir les memes noms

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    insert into
             table1
    Select
             *
    from
              table2
    where
              'condition sur table2'
    Ce qui est en principe préconnisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Insert into
             table1
             ( T1_C1 , T1_C2 , ..... , T1_CX )
    select
              T2_C1 , T2_C2 , ...... , T2_CX 
    from
              table2
    where
              'condition sur table2'
    On dirait que j'arrive aprés la bataille

  4. #4
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    merci beaucoup a vous deux pour vos reponses promptes
    je vais essayé cela de suite ...
    @ plus

  5. #5
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    Désolé je retourne a la charge !
    Voila, dans une application je me sert d'une table temporaire.
    Avant de la remplir je la vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from TableTampon
    ensuite je la remplie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert into TableTampon ...
    J'ai une interface qui propose a l'utilisateur de modifier les valeurs des champs ou de créér d'autre enregistrements. Et lorsque je veux rebalancer les données dans la table originale je fais un
    Mais comment faire pour transferer l'enregistrement avec l'instruction UPDATE lorsqu'il a été créé dans la table tampon ?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    Syntaxe normative

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE MaTable
       SET Col1 = TableTampon.Col1,
           Col2 = TableTampon.Col2,
           Col3 = TableTampon.Col3,
           ...
    WHERE  ColKey = TableTampon.ColKey
    Syntaxe SQL Server

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE MaTable
       SET Col1 = TableTampon.Col1,
           Col2 = TableTampon.Col2,
           Col3 = TableTampon.Col3,
           ...
    FROM   MaTable T
           INNER JOIN TableTampon TT
                 ON  T.ColKey = TT.ColKey

  7. #7
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    merci pour ta reponse SQLPRO

    je pense avoir trouvé mon bonheur grace a l'instruction REPLACE qui fait exactement la meme chose que le INSERT à une difference pres : il teste si l'enregistrement existe,et s'il n'existe pas il le créé.

    @ plus

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

Discussions similaires

  1. transfert d'enregistrement (débutante)
    Par emmablue dans le forum Access
    Réponses: 3
    Dernier message: 24/07/2006, 16h10
  2. transfert d'enregistrements entre base
    Par le69 dans le forum Requêtes
    Réponses: 6
    Dernier message: 29/06/2006, 23h37
  3. Transfert d'enregistrement
    Par kernel57 dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/03/2006, 15h27
  4. AdoQuery:Transfert d'enregistrements entre deux bases access
    Par jnc dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/01/2006, 13h39
  5. Réponses: 1
    Dernier message: 27/01/2006, 14h06

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