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 :

[Mysql 3.23] Un UPDATE avec un SELECT


Sujet :

Langage SQL

  1. #1
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut [Mysql 3.23] Un UPDATE avec un SELECT
    Bonjour à tous,
    J'aurai voulu savoir si il était possible de faire UPDATE d'un champ en intégrant un SELECT dans la requete, voila en gros ce que je veux faire. Dans une table j'ai certaines lignes pour lesquels un des champ est vide. Et cette valeur se trouve dans une autre table. Ces deux tables contiennent des champs identiques. Voilà, en gros. Donc je pensais faire un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE table1
    SET champ=(SELECT champ FROM table2)
    WHERE ID.table1=ID.table2
    Pensez vous que ce soit possible ?
    Merci pour vos réponses

  2. #2
    Membre éprouvé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 398
    Par défaut
    Bonjour,
    j'aurai plutôt codé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE table1
    SET champ=(SELECT champ FROM table2
                     WHERE ID.table1=ID.table2),
    champ2 = ,...(autres champs)
    where....(conditions sur table1)
    a+

  3. #3
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut
    J'ai donc fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE Table1 SET champ=(SELECT champ FROM table2 WHERE table1.ID=table2.ID);
    Mais j'ai une erreur mysql 1064 me disant que j'ai une erreur de syntaxe au niveaus du SELECT... .
    La syntaxe est elle vraiment bonne ou bien mysql 3.23 ne prend pas en compte les SELECT dans les UPDATE ?

  4. #4
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    Bonjour,

    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE table1 INNER JOIN table2 ON table1.idcode=table2.idcode 
    SET table1.nom = table2.nom
    A+

  5. #5
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut
    Je test ça de suite...

  6. #6
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut
    Bon j'ai testé, le probleme est le meme, Il me dit que j'ai une erreur de syntaxe au niveau du INNER JOIN...

  7. #7
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Salut,
    Citation Envoyé par griese
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Table1 SET champ=(SELECT champ FROM table2 WHERE table1.ID=table2.ID);
    Mais j'ai une erreur mysql 1064 me disant que j'ai une erreur de syntaxe au niveaus du SELECT... .
    La syntaxe est elle vraiment bonne ou bien mysql 3.23 ne prend pas en compte les SELECT dans les UPDATE ?
    MySQL n'acceptant les sous-requêtes qu'à partir de la 4.1, et ceci en est une ...

    Citation Envoyé par soltani1
    Bonjour,

    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE table1 INNER JOIN table2 ON table1.idcode=table2.idcode 
    SET table1.nom = table2.nom
    A+
    Il me semble bien que cette syntaxe hors-norme n'est (à ma connaissance) acceptée que par SQL Server ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  8. #8
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut
    J'ai trouvé une solution en passant par le php. Je fais d'abord le SELECT puis je récupère les valeurs dans des variables que j'utilise dans mon INSERT. Ce système marche très bien. Merci à vous pour vous être penché sur mon cas. Bonne fêtes de fin d'années à vous.

  9. #9
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    Bonjour Xo,

    elle est acceptée aussi par Access.

    A+

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

Discussions similaires

  1. [SQL SERVER 2005] Update avec un SELECT
    Par djilos dans le forum Développement
    Réponses: 1
    Dernier message: 24/04/2010, 10h23
  2. Pb update avec sous select
    Par gnomathibus dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/03/2009, 13h47
  3. Requête update avec un select
    Par housni dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/08/2007, 00h22
  4. Update avec un select sur la même table
    Par Xunil dans le forum Administration
    Réponses: 5
    Dernier message: 09/04/2007, 16h40
  5. [ SQL ] Faire un update avec un select imbriqué
    Par zozolh2 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/04/2005, 12h05

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