joerg
Avatar joerg
Themenersteller
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)

3 Maximal Werte in Summe

am 31.07.2009, 23:58 Uhr eröffnete joerg 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


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

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


joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 01.08.2009, 10:44 Uhr schrieb joerg

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


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

gmmts
Avatar gmmts
Projektleiter
Guru (183 Beiträge)
am 03.08.2009, 12:50 Uhr schrieb gmmts

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


LG André Schneider

Projektleiter GMMTS Community
Eine Community mit vielen Funktionen, Datenschutz, Privatsphäre, Verschlüsselungen und vielem mehr.
Homepage: http://gmmts.de
E-Mail: kontakt@gmmts.de

[img]http://www.seitenreport.de/button.ph

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 03.08.2009, 14:44 Uhr schrieb joerg

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


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

der_booker
Foren Moderator
selbständig
(2762 Beiträge)
am 03.08.2009, 15:20 Uhr schrieb der_booker

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:


Heiko Jendreck
personal helpdesk
http://www.phw-jendreck.de
http://www.seo-labor.com

mic85
Avatar mic85
Informatiker
Beginner (44 Beiträge)
am 03.08.2009, 17:17 Uhr schrieb mic85

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.


Liebe Grüße aus Mannheim,

Michael Kohl

kohl@websol-media.de
http://www.websol-media.de

der_booker
Foren Moderator
selbständig
(2762 Beiträge)
am 03.08.2009, 17:28 Uhr schrieb der_booker

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:


Heiko Jendreck
personal helpdesk
http://www.phw-jendreck.de
http://www.seo-labor.com

joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 03.08.2009, 18:09 Uhr schrieb joerg

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


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

mic85
Avatar mic85
Informatiker
Beginner (44 Beiträge)
am 03.08.2009, 18:48 Uhr schrieb mic85

kein thema,

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


Liebe Grüße aus Mannheim,

Michael Kohl

kohl@websol-media.de
http://www.websol-media.de

gmmts
Avatar gmmts
Projektleiter
Guru (183 Beiträge)
am 03.08.2009, 21:26 Uhr schrieb gmmts

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

Ja, knifflige Sachen sind toll


LG André Schneider

Projektleiter GMMTS Community
Eine Community mit vielen Funktionen, Datenschutz, Privatsphäre, Verschlüsselungen und vielem mehr.
Homepage: http://gmmts.de
E-Mail: kontakt@gmmts.de

[img]http://www.seitenreport.de/button.ph



« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5273 Themen und 36107 Beiträge.
Insgesamt sind 48345 Mitglieder registriert.