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 dans un ordre précis


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 64
    Points : 57
    Points
    57
    Par défaut Update dans un ordre précis
    Bonjour,

    J'ai un petit souci pour mettre en place un système de parrainage. Pour résumer, j'ai une table comptes contenant les champs id, nom, solde, gains, parrain.

    Les utilisateurs qui s'enregistrent ont la possibilité de donner un e-mail de parrain et ont des avantages. Chaque parrain reçoit 10% des gains de ces filleuls grâce à un calcul fait journalièrement.
    Actuellement, à l’aide à un script php, je récupère la liste des membre dans l'ordre décroissant, puis pour chacun d’eux je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE compte SET gains = gains + (SELECT SUM(gains) FROM compte WHERE parrain=id) WHERE id=$id;
    UPDATE compte SET argent = argent + gains, gains = 0 FROM compte;
    (avec $id contenant l'id du membre en court de traitement.)

    Mon problème est que ceci est hyper long... L'idéal serait de faire un truc dans le genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE compte SET gains = gains + (SELECT SUM(gains) FROM compte WHERE parrain=id) ORDER BY id DESC;
    UPDATE compte SET argent = argent + gains, gains = 0 FROM compte;
    Mon problème est donc le ORDER BY id DESC qui est impossible avec un update... seulement si je l'utilise pas, rien ne m'assure que je toucherai les 1% de mon petit filleul...

    Connaissez-vous une solution? Merci d'avance pour toute réponse!

    ++

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Donnez le DDL de vos tables ainsi qu'un jeu d'essais et un exemple du résultat attendu. Cela pour vous aider.

    En faisant cela vous repeceterz la charte de postage :
    http://www.developpez.net/forums/showthread.php?t=944

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Effectuer des calculs dans un ordre précis
    Par missoly dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/07/2008, 15h57
  2. [Tableaux] Textes à afficher dans un ordre précis
    Par taurus-le-bien-aime dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2008, 18h02
  3. Tri par résumé dans un ordre précis
    Par Folkensan dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 11/12/2007, 16h21
  4. Lancer les web-app dans un ordre précis
    Par izioto dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 04/12/2007, 09h44
  5. Réponses: 1
    Dernier message: 01/12/2007, 15h18

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