gelöschter Benutzer

3 Maximal Werte in Summe

am 31.07.2009, 23:58 Uhr eröffnete folgenden Thread
PHP & MySQL    3625 mal gelesen    11 Antwort(en).

Hallo

Habe für eine Abfrage in Mysql mein derzeitiges Wissen erschöpft!

Und zwar möchte ich aus einer Datenbank die Summe der 3 Maximalen Punkte pro idname im letztem Jahr auslesen.
Jetzt müsste ich für die Summe noch ein Limit für 3 setzen. Bei der Summe berechne ich momentan alle Datensätze.

[SQL]
$abfrage = "SELECT *, SUM(punkte) AS summe, MAX(punkte) as

max FROM weltrang WHERE now()<date_add(datum,interval 1 year) <br />
GROUP BY idname ORDER BY summe DESC";
$ergebnis = mysql_query($abfrage);
while($dat = mysql_fetch_array($ergebnis))
[/SQL]

Kann mir da jemand weiterhelfen?

Gruß
Jörg


romacron
JDev Xer
Content Gott (1224 Beiträge)
am 01.08.2009, 07:54 Uhr schrieb romacron

Hallo Joerg!

Versuchs doch mal mit LIMIT fürs sql
[TS]...idname ORDER BY summe DESC LIMIT 3
Für mysql gibt refman-5.1-de.chm
Da stehen ein paar Hilfestellungen drinn.

Gruss Roman



gelöschter Benutzer
am 01.08.2009, 10:44 Uhr schrieb

Hallo Roman

Mit der Änderung wirft er mir nur 3 Datensätze insgesamt aus.

Diese Einschränkung möchte ich dann doch nicht haben. :wink:

Gruß

Jörg



gelöschter Benutzer
am 03.08.2009, 12:50 Uhr schrieb

Ich verstehe dein Vorhaben nicht so ganz. Erkläre es doch mal genauer. Dann kann ich dir helfen.



gelöschter Benutzer
am 03.08.2009, 14:44 Uhr schrieb

Hallo Andre

Ich möchte die Summe der drei höchsten Werte und nicht mehr

Werte zu einer ID mir durch SQL ausgeben lassen.

Zusätzlich dürfen die Werte nur ein Jahr zurückliegen.

Bei der Summe werden momentan alle Werte berechnet und Maximalwert gibt mir nur den höchsten Wert zurück!

Also müsste ich mir entweder die drei höchsten Maximalwerte ausgeben lassen und die dann summieren oder es so bauen das die Summe nur mit den drei grössten Werten gebildet wird.

Gruß

Jörg



gelöschter Benutzer
am 03.08.2009, 15:20 Uhr schrieb

Hallo Jörg, auch das ist noch zu schwämmig, da uns die einzelnen Spalten unbekannt sind.
Hier http://www.bsro.tue.bw.schule.de/vb/vbhilfe/vb-hilfe/sql.htm findest Du eine Übersicht als SQL-Einführung.
:wink:



gelöschter Benutzer
am 03.08.2009, 17:17 Uhr schrieb

hallo jörg,

diese interessante abfrage ist in in mysql nicht in einem query lösbar.

option 1:
du könntest höchstens mit UNION ein untergeordnetes query mitsenden das die die 3 höchsten werte "nachliefert".
ACHTUNG: potentiell unsafe!

option 2:
die logik in php abbilden. ein query in einer schleife ist aber ein absolutes no-go!!! die erzeugte last steigt mit der größe des datenbestands!

option 3 (mein tipp):
beim punkte erfassen direkt die höchsten werte in der datenbank speichern a la: abs_max, 2nd_max, 3rd_max und diese beim aktualisieren pflegen. somit wird dein problem in einem query lösbar und der overhead bleibt minimal. ist zwar nicht das sauberste datenbankmodell aber meiner meinung nach in diesem fall praktikabel.



gelöschter Benutzer
am 03.08.2009, 17:28 Uhr schrieb

Vielleicht hätte ich da noch ein Tipp.?
Komplizierte Abfragen stelle ich mit Access nach. Diese Abfragen lassen sich dort einfach zusammenstellen und ggf. anpassen.
:wink:



gelöschter Benutzer
am 03.08.2009, 18:09 Uhr schrieb

Hallo Michael

Erst mal Danke !

Ich würde dir wohl zustimmen das Option 3 wohl am meisten praktitabel ist. Da sehe ich aber den Pflegeaufwand als zu groß an.

Heiko auch dir ein Danke für den Link!
Das mit den Datenbanken anlegen klingt ganz gut.

Ich bin mir zwar unsicher ob das jetzt geht. Ich bin auch noch dabei mich in das Thema einzulesen.

Ich denke mal eine mögliche Option wäre auch die 3 höchsten Werte pro User innerhalb der Zeitspanne zu bestimmen.

Diese dann in eine neue oder leere Datenbank ausgeben und von der dann die Abfrage mit der Summe machen.

Oder das mit einer verschachtelten Abfrage erreichen. Keine Ahnung momentan wie das gehen soll aber die Richtung klingt auch ganz gut.

Bedeutet einfach momentan das nach hinten verschieben und in der Zwischenzeit sich ein bisschen schlauer zu machen!
Das Thema Mysql ist doch ein bisschen komplexer als ich vor 2 Wochen gedacht habe.

Auf jeden Fall haben mir die Beiträge jetzt soweit weitergeholfen das mir einige Befehle sich ein bisschen mehr erschlossen haben.

Schauen wir mal wie gut das Buch ist was ich mir zu dem Thema bestellt habe.

Lösung stelle ich dann vor sobald ich eine habe! :wink:
Schöne Herrausforderung ich liebe sowas kniffliges!

Gruß
Jörg



gelöschter Benutzer
am 03.08.2009, 18:48 Uhr schrieb

kein thema,

wenns konkret wird kannst du auch gerne von der nachrichten-funktion gebrauch machen



gelöschter Benutzer
am 03.08.2009, 21:26 Uhr schrieb

Wäre interessant zu wissen, was du vor hast. Vielleicht kann man dir dann einen einfachen Lösungsvorschlag machen.

Ja, knifflige Sachen sind toll




« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5272 Themen und 36104 Beiträge.
Insgesamt sind 496 Mitglieder registriert.