J'ai une table sqlite3 qui indique quand je gagne/perds des points dans un jeu. Exemple/résultat de la requête :
SELECT time,p2 FROM events WHERE p1='barrycarter' AND action='points'
ORDER BY time;
1280622305|-22
1280625580|-9
1280627919|20
1280688964|21
1280694395|-11
1280698006|28
1280705461|-14
1280706788|-13
[etc]
Je veux maintenant mon total de points de course. Étant donné que je commence avec 1000 points, voici une façon de le faire.
SELECT DISTINCT(time), (SELECT
1000+SUM(p2) FROM events e WHERE p1='barrycarter' AND action='points'
AND e.time <= e2.time) AS points FROM events e2 WHERE p1='barrycarter'
AND action='points' ORDER BY time
mais cela est très inefficace. Quelle est la meilleure façon de l'écrire ?
MySQL dispose de @variables, ce qui vous permet de faire des choses comme :
SELECT time, @tot := @tot+points ...
mais j'utilise sqlite3 et ce qui précède n'est pas du SQL standard ANSI de toute façon.
Plus d'informations sur le db si quelqu'un en a besoin : http://ccgames.db.94y.info/
EDIT : Merci pour les réponses ! Mon dilemme : je laisse n'importe qui exécuter n'importe quelle simple Requête SELECT sur " http://ccgames.db.94y.info/ ". Je veux leur donner un accès utile à mes données, mais pas au point d'autoriser des script ou de permettre des requêtes multiples avec état. J'ai donc besoin d'une seule requête SQL qui peut faire l'accumulation. Voir aussi :
Solution existante pour partager des données de base de données de manière utile mais sûre ?