HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - MySQL: fehlerhafte Abfrage bei sum() und LIMIT

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

MySQL: fehlerhafte Abfrage bei sum() und LIMIT

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   MySQL
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 19.10.2005 09:19:09    Titel: MySQL: fehlerhafte Abfrage bei sum() und LIMIT Antworten mit Zitat

Hallo Jan, hallo Leute,

ich habe eine Tabelle mit ID, Datum und einen Wert:
Code:

ID |     Datum   | Wert
1  | 2005-10-01 | 1
2  | 2005-10-02 | 1
3  | 2005-10-03 | 1
4  | 2005-10-04 | 1
5  | 2005-10-05 | 1
6  | 2005-10-06 | 1
7  | 2005-10-07 | 1


Wenn ich nun die Abfrage
Code:

SELECT sum(Wert) FROM `tabelle` WHERE `Datum` BETWEEN '2005-10-02' AND '2005-10-06'

mache, kommt als Ergebnis 5 raus.

Mache ich jedoch folgende Abfrage
Code:

SELECT sum(Wert) FROM `tabelle` ORDER BY `ID` DESC Limit 5

kommt als Ergebnis 7 heraus.

Lasse ich jedoch das sum() weg, dann kommt bei der Abfrage mit dem Limit nur die letzten 5 Einträge. Lasse ich das sum() bei der BETWEEN Abfrage weg, kommen ebenfalls 5 Einträge heraus.

MySQL verhält sich gleich, wenn ich sum() weglasse, jedoch anders und meines Erachten falsch (bei der Limit Abfrage), wenn ich mit sum () arbeite.

Ist das ein Bug, oder darf ich so nicht arbeiten?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
l-roy
Gast





BeitragVerfasst am: 19.10.2005 09:40:25    Titel: Antworten mit Zitat

Wenn ich mich recht entsinne, bezieht sich LIMIT nur und auschließlich auf die Ausgabe (!) der Ergebnisse, nicht auf die Logik der zur Abfrage heranzuziehenden Werte, d.h. wenn Du sum() ohne eine Gruppierung benutzt, kommt eh immer nur ein Wert heraus, so dass die Ausgabelimitierung nicht zum Tragen kommt.

Willst du die zur Summe heranzuziehenden Daten einschränken, mußt du die WHERE-Klausel benutzen.
Nach oben
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 19.10.2005 10:36:11    Titel: Antworten mit Zitat

Jau, könnte stimmen. Die Lösung ist eine geschachtelte Abfrage:
Code:
SELECT SUM( 7H1809160 )
FROM (

SELECT `7H1809160`
FROM `picks`
ORDER BY `ID` DESC
LIMIT 7
) AS blablabla


Jetzt funzt es.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   MySQL
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.