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 :

Update + SUM() ?


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut Update + SUM() ?
    Pour les besoins de mon jeu je dois faire une requete qui mette a jour toutes les unités acheté en un fois puisque le jeu se deroule en tour / tour.

    Cependant j'ai egalement la somme des salaire de mes joueurs a faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "UPDATE j_joueur, j_planete SET j_joueur.credit = j_joueur.credit + SUM(j_planete.rev) WHERE j_planete.id_joueur = j_joueur.id";
    $result=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    d'apres la doc il faudrait apparement faire le sum dans un select ...
    le pb c'est que je vois pas trop comment construire mon select dans mon cas precis

    pouriez vous m'aidez

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    UPDATE j_joueur, j_planete
    Cherches tu à faire un update de 2 tables en une seule fois ?
    Ca n'est pas possible il faut faire 2 Update
    Steve Hostettler
    est ton ami(e) et le tag aussi.

  3. #3
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par ze_key
    UPDATE j_joueur, j_planete
    Cherches tu à faire un update de 2 tables en une seule fois ?
    Ca n'est pas possible il faut faire 2 Update
    c'est pas le update qui bloque c'est possible
    ma requete sans le sum() est possible le pb est que je veux intéger la fonction sum dedans

  4. #4
    Membre actif Avatar de Ryan Sheckler
    Homme Profil pro
    Moine
    Inscrit en
    Novembre 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Moine

    Informations forums :
    Inscription : Novembre 2005
    Messages : 196
    Points : 216
    Points
    216
    Par défaut
    Bonsoir,

    Le sum() dans une requête du style ne peut se faire.

    Exemple de requête (qui n'a pas grand sens) qui va foirer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE PERSONNE
    SET PER_LOC_ID=SUM(PER_ID)
    WHERE PER_PRENOM='Vincent';
    * * *

    Proposition de solution (pas trop spaghetti, j'espère)

    1- Tu fais un select sum().
    2- Tu enregistres le résultat dans une table (temporaire, if you wish).
    3- Dans ta requête d'update, remplaces ton sum par l'attribut de la table temporaire.


    Pour l'exemple que j'ai cité plus haut, l'étape 3 reviendrait à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE PERSONNE, TEMPORARY
    SET PER_LOC_ID=TEM_SUM
    WHERE PER_PRENOM='Vincent';
    " Si un jour nocturne et un jour diurne pouvaient nous embrasser tous,
    ce serait le but suprême de tous les désirs. " [Schelling]

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par ze_key
    Cherches tu à faire un update de 2 tables en une seule fois ?
    Ca n'est pas possible il faut faire 2 Update
    +1
    http://sql.developpez.com/sqlaz/dml/#L3

    Donne-nous un minimum d'infos sur ton schéma et sur ce que ta requête doit réaliser, on pourra sans doute te donner des infos plus précises

    [Edit]
    Sans tests, donc sans garanties, je te propose ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE j_joueur
    SET credit = credit + (SELECT SUM(j_planete.rev) 
                             FROM j_planete 
                            WHERE j_planete.id_joueur = id)
    [/Edit]
    "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 régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    heu ben une table planete avec les biens de joueurs + salaire sur la planete
    et une table joueurs avec id + salaire ...

    le but est de mettre a jour le salaire des joueurs en une requete... et en meme temps que les mise a jours des autres biens

    j'ai vu qu'on pouvais utiliser @: ou chez pas quoi ?

    vous pouvez m'en dire plus

    merci par avance

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Et ma proposition précédente, ça donne quelque chose ou pas ?

    Pour un UPDATE de plusieurs champs, la syntaxe est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE maTable
       SET Champ1 = Valeur1, 
           Champ2 = valeur2, 
           ...
     WHERE ...
    Citation Envoyé par dark_vidor
    j'ai vu qu'on pouvais utiliser @: ou chez pas quoi ?
    vous pouvez m'en dire plus
    On dit : "chai pas quoi"

    Ca dépend, tu veux en faire quoi, de ton @ ?
    "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

Discussions similaires

  1. Update + SUM + Group BY
    Par laure07 dans le forum Langage SQL
    Réponses: 24
    Dernier message: 21/10/2020, 18h39
  2. Problème avec un UPDATE + SUM
    Par Nil_ct dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/01/2011, 14h51
  3. Update Sum et Jointure, impossible ?
    Par UVB_PC dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/10/2008, 13h42
  4. update + sum + group by
    Par PhYx dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/06/2008, 15h44
  5. Réponses: 3
    Dernier message: 22/12/2005, 17h47

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