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 et SQL. Discussion :

Updater une table par rapport à une autre [AC-2002]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 25
    Points
    25
    Par défaut Updater une table par rapport à une autre
    Bonjour,

    j'ai 2 tables disons old table et new table qui contiennent chacun 2 champs :

    ID ( pas un autonumber) unicité
    Status

    Si l'ID de new table se trouve dans old table, on remplace la ligne pour avoir le nouveau status.

    et si l'ID de new table ne s'y trouve pas, et ben on ajoute cet ID ( et son status):

    Pour illustrer :

    New table:
    ID status

    banane1 mure
    banane2 pourrie
    banane3 pas mure

    Old table:
    ID status

    banane2 mure
    banane1 pas mure
    banane4 pas mure


    et.... tada ! Old table devient

    Old table:
    banane 1 mure
    banane 2 pourrie
    banane 3 pas mure
    banane 4 pas mure

    et New table se vide

    Merci d'avance pour votre aide !

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Trois requêtes à lancer dans cet ordre.

    Mise à jour des enregistrements en commun
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE [Old table] INNER JOIN [New table] ON [Old table].ID = [New table].ID
    SET [Old table].status = [New table].status
    Ajout des enregistrements de New table qui ne sont pas dans Old table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO [Old table] (ID, Status)
    SELECT [New table].ID, [New table].Status
    FROM  [New table] LEFT JOIN [Old table] ON [New table].ID = [Old table].ID
    WHERE [Old table].ID IS NULL
    Vider New table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM [New Table]
    En espérant ne pas m'être planté dans mes copier/coller

    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    merci pour ta reponse, j'essaye ça dans l'apres midi et je te tiens au courant

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    UPDATE OldBanane INNER JOIN NewBanane ON OldBanane.idbanane = NewBanane.idbanane
    SET OldBanane.statut = NewBanane.statut
     
    INSERT INTO OldBanane (idbanane, statut)
    SELECT NewBanane.idbanane, NewBanane.statut
    FROM  NewBanane LEFT JOIN OldBanane ON NewBanane.idbanane = OldBanane.idbanane
    WHERE OldBanane.idbanane IS NULL
     
    ORDER BY OldBanane.idbanane
     
     
    DELETE FROM NewBanane;
    ça merde au niveau de insert into,

    y a un probleme de syntaxe ... missing operator

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    Quelqu'un peut il m'aider ?

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 224
    Points : 94
    Points
    94
    Par défaut
    Désolé mais vu le mal que tu à je te conseillerais d'utiliser un ETL tu ira plus vite surtout si c'est pour un grosse application...

    ex: Talend, DATA INTERGRATION DE PENTAHO

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    tu n'as pas le droit de mettre plusieurs instructions SQL dans une seule requête.
    Ce que j'ai donné correspond au code de trois requêtes.

    A+

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 25
    Points
    25
    Par défaut
    ok je suis un boulet lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE OldBanane INNER JOIN NewBanane ON OldBanane.idbanane=NewBanane.idbanane SET OldBanane.statut = NewBanane.statut;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO OldBanane ( idbanane, statut )
    SELECT NewBanane.idbanane, NewBanane.statut
    FROM NewBanane LEFT JOIN OldBanane ON OldBanane.idbanane=NewBanane.idbanane
    WHERE OldBanane.idbanane IS NULL;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE statut
    FROM NewBanane;
    tout ça en 3 requetes bien sur !

    @kfmystik : je suis un novice donc merci d'avoir un peu de pitié

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

Discussions similaires

  1. Mettre à jour une table par rapport à une autre
    Par remsrock dans le forum Développement
    Réponses: 2
    Dernier message: 18/11/2008, 12h22
  2. Réponses: 16
    Dernier message: 19/02/2008, 14h10
  3. Réponses: 1
    Dernier message: 01/08/2006, 14h43
  4. Réponses: 7
    Dernier message: 12/07/2006, 17h34
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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