Probleme avec fonction SELECT SUM... LIMIT

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme avec fonction SELECT SUM... LIMIT

par cco » 03 nov. 2006, 18:15

La version de MySql et en effet 3.25.

Selon ta suggestion j'ai donc bricolé avec des WHERE et ai du ajouter une colone index, incrémentée automatiquement.

Ca donne finalement ça

Code : Tout sélectionner

SELECT SUM(time) FROM db WHERE index < (x+1)
tant que les saisies se font chronologiquement ça fonctionne.

Merci beaucoup.

par Ryle » 03 nov. 2006, 13:30

Ce n'est pas "incompatible", mais ce n'est effectivement pas adapté à ce que tu veux faire. L'instruction LIMIT n'intervient qu'à la fin du traitement pour filtrer le nombre de résultat retournés.

Tu peux donc sois le décomposer en une sous requête (si ta version de mysql le permet) :

Code : Tout sélectionner

SELECT SUM(...) FROM (SELECT ... LIMIT ... )
Soit utiliser les conditions WHERE/AND pour que ta requête (et donc ta somme) ne porte que sur les lignes qui t'interessent :)

Probleme avec fonction SELECT SUM... LIMIT

par cco » 03 nov. 2006, 12:41

J'ai une table qui contient un champs temps de type "time"

J'aimerais extraire les x premiers enregistrements et additionner le champ temps.

Si je fais SELECT SUM(temps) FROM bd LIMIT 0,x

la fonction me retourne la somme de TOUTE la table, comme si elle ne tenait pas compte de LIMIT.

Si je prends directement les enregistrements "SELECT temps FROM bd LIMIT 0,x" ils sont bien filtrés, donc dans ce cas la fonction LIMIT marche.

Est-ce que SUM est incompatible avec LIMIT ?