Discussion: Update or insert ?

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : février 2008
    Messages : 21
    Points : 28
    Points
    28

    Par défaut Update or insert ?

    Bonjour,

    Je cherche un petit coup de main sur une issue que je pense solvable via access
    Vais tenter de vous expliquer

    Dans la pratique j'ai 2 tables que je join sur un certain champs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT table1.*, table2.*
    FROM [Table1] LEFT JOIN Table2 ON champ1= table2.champ2;

    Et j'aimerais pouvoir faire un insert ou update du champ8 de ma table2 lorsque que le champs 1 de ma table 1 a une string length de 2

    en gros ja vais ecris un truc du genre



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE table2
    SET champ8 = "toto.docm"
    WHERE LEN(table1).champ1 = 2);
    mais cela ne fonctionne pas :/

    Est-ce qu'une bonne ame pourrait m'éclairer ?


    Merci d'avance

  2. #2
    Membre expérimenté Avatar de vttman
    Homme Profil pro
    Mainframe et le WE (CSS, PHP, JS et MYSQL)
    Inscrit en
    décembre 2002
    Messages
    749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Mainframe et le WE (CSS, PHP, JS et MYSQL)
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2002
    Messages : 749
    Points : 1 415
    Points
    1 415

    Par défaut

    D'abord sauvegarder les tables !!!

    et essayer ce genre [EDIT] Le in est à remplacer par = sinon on perd le lien entre la table1 et la table2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE table2
    SET table2.champ8 = "toto.docm"
    WHERE table2.champ2
    in (select table1.champ1 from Table1 where LENgth(table1.champ1) = 2))
    Si ça ne convient pas, envoyer un jeu d'essai de table1 et table2 + définition des tables et résultat attendu ...
    Je suis sympa comme tout Mosellan mais ...
    ... (m')aider ou (me) mettre sur la voie c'est une chose
    ... tout (me) faire de A à Z, c'est pas ma conception du rôle d'un forum X ou Y
    Si vous n'êtes pas satisfait de mes réponses, n'hésitez pas à me le faire savoir Merci !

  3. #3
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 317
    Points : 3 951
    Points
    3 951

    Par défaut

    Bonjour,
    il faut aussi faire une jointure avec la table2 vers table1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE table2 INNER JOIN Table1 ON table2.champ1 = Table1.champ1 SET table2.champ8 = "toto.docm"
    WHERE CInt(Len([Table1].[champ1]))=2;
    Et j'aimerais pouvoir faire un insert ou update du champ8 de ma table2 lorsque que le champs 1 de ma table 1 a une string length de 2
    Remarque : on ne peut pas faire un insert ou update avec une seule requête, il faut faire une requête par action.

  4. #4
    Membre expérimenté Avatar de vttman
    Homme Profil pro
    Mainframe et le WE (CSS, PHP, JS et MYSQL)
    Inscrit en
    décembre 2002
    Messages
    749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Mainframe et le WE (CSS, PHP, JS et MYSQL)
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2002
    Messages : 749
    Points : 1 415
    Points
    1 415

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    Bonjour,
    il faut aussi faire une jointure avec la table2 vers table1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE table2 INNER JOIN Table1 ON table2.champ1 = Table1.champ1 SET table2.champ8 = "toto.docm"
    WHERE CInt(Len([Table1].[champ1]))=2;
    Remarque : on ne peut pas faire un insert ou update avec une seule requête, il faut faire une requête par action.
    Oui effectivement pour la jointure entre table2 et table1
    Je suis sympa comme tout Mosellan mais ...
    ... (m')aider ou (me) mettre sur la voie c'est une chose
    ... tout (me) faire de A à Z, c'est pas ma conception du rôle d'un forum X ou Y
    Si vous n'êtes pas satisfait de mes réponses, n'hésitez pas à me le faire savoir Merci !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : février 2008
    Messages : 21
    Points : 28
    Points
    28

    Par défaut

    Merci pour l aiguillage

    je suppose donc l'utilisation d'une requete UNION entre le select et l'update

    Enfin je vais continuer a creuser, quoi qu'il arrive je vous donnerai l'info

    Bien à vous, bonne journée

  6. #6
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 317
    Points : 3 951
    Points
    3 951

    Par défaut

    bonjour,
    je suppose donc l'utilisation d'une requete UNION entre le select et l'update
    non, car la requête UNION ne peut pas être utilisée pour de la mise à jour.

Discussions similaires

  1. [SQL2K][BCK] erreur de syntax pour update et insert
    Par lifecraft dans le forum MS SQL-Server
    Réponses: 1
    Dernier message: 24/02/2006, 11h31
  2. update or insert
    Par jarod_bx dans le forum Access
    Réponses: 3
    Dernier message: 09/01/2006, 20h03
  3. sql update et insert dans la meme requete
    Par Jessicaa dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/12/2005, 16h39
  4. Réponses: 8
    Dernier message: 22/06/2005, 11h34
  5. Update ou insert avec incrément d'un champ
    Par dany13 dans le forum ASP
    Réponses: 5
    Dernier message: 15/10/2004, 13h53

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