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] update a partir du resultat d'un select


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Par défaut [MySQL] update a partir du resultat d'un select
    Est il possible de faire un update à partir du resultat d'un select ?

    Par exemple :

    update table set champ1=champ1+delta where idtable in (select id, delta from table1)

  2. #2
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    C'est possible

  3. #3
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Bonjour,

    pour SQL Server je dis oui et cela devrait donner quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    update table 
    set champ1=champ1+t1.delta 
    from table t
         inner join table1 t1 on t.idtable = t1.id
    après pour un autre SGBD ...

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Par défaut
    attention je souhaite que pour chaque ligne trouvée que le delta provienne du resultat du select !

  5. #5
    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 Re: update a partir du resultat d'un select
    Citation Envoyé par brice01
    Est il possible de faire un update à partir du resultat d'un select ?

    Par exemple :

    update table set champ1=champ1+delta where idtable in (select id, delta from table1)
    As-tu essayé ? Ca donne quoi ?
    "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

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Par défaut
    Cela ne fonctionne pas avec un select sur plusieurs champs.

    L'erreur renvoyé est : le resultat du select ne doit renvoyer qu'une seule colonne

  7. #7
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update table set champ1=champ1+delta where idtable in (select id from table1)
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update table set champ1=champ1+delta where (idtable,delta) in (select id, delta from table1)
    Il faut autant de champs chaque côté du IN.

    On ne compare pas un n-uplet avec un n-uplet+1.

  8. #8
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Par défaut
    Citation Envoyé par TheRussian
    Bonjour,

    pour SQL Server je dis oui et cela devrait donner quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    update table 
    set champ1=champ1+t1.delta 
    from table t
         inner join table1 t1 on t.idtable = t1.id
    après pour un autre SGBD ...
    J'ai une erreur de syntaxe a partir de 'from' (Mysql)

  9. #9
    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
    Citation Envoyé par brice01
    J'ai une erreur de syntaxe a partir de 'from' (Mysql)
    La syntaxe proposée par TheRussian est propre à SQL server et ne fonctionnera pas sous MySql.
    "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

  10. #10
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Par défaut
    Il n'y a donc pas de solution pour Mysql ?

    Demain j'essaye la solution de BiMouXeTTe.

    Merci

  11. #11
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Citation Envoyé par Xo
    Citation Envoyé par brice01
    J'ai une erreur de syntaxe a partir de 'from' (Mysql)
    La syntaxe proposée par TheRussian est propre à SQL server et ne fonctionnera pas sous MySql.
    Exact mais je ne connaissais pas le SGBD.

    Si la version de MySQL accepte les sous-requêtes, peut-être que ceci peut aller (Attention je n'est pas testé et je ne connais pas trop MySQL) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    update table t
    set champ1= ( select t.champ1+t1.delta
                          from table1 t1 
                          where t.idtable = t1.id)
    Car si "delta" n'est présent que dans la table "table1" je ne pense pas que les solutions de BiMouXette fonctionnent.

Discussions similaires

  1. [VB.NET] Pb sur update à partir champs Textbox
    Par patdez dans le forum ASP.NET
    Réponses: 5
    Dernier message: 28/06/2006, 09h28
  2. prob. d' incrémentation /mysql UPDATE
    Par K4trix dans le forum Requêtes
    Réponses: 15
    Dernier message: 01/12/2005, 17h27
  3. UPDATE globale à partir d'un SELECT
    Par lilianen dans le forum Oracle
    Réponses: 2
    Dernier message: 28/11/2005, 15h55
  4. update a partir d'une vue
    Par jlamazou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/09/2005, 11h54
  5. UPDATE : table à partir d'une autre
    Par Laura dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/10/2003, 21h34

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