<a href="-luan-381"></a> <a href=""></a> <a href="-couple-name-2347"></a> <a…
von:
VPNwelt.com sucht Feedback Wie der Name schon sagt handelt es sich um eine Review Website für…
von: florian.berg.privat
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
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
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
Ich verstehe dein Vorhaben nicht so ganz. Erkläre es doch mal genauer. Dann kann ich dir helfen.
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
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:
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.
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:
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
kein thema,
wenns konkret wird kannst du auch gerne von der nachrichten-funktion gebrauch machen
Wäre interessant zu wissen, was du vor hast. Vielleicht kann man dir dann einen einfachen Lösungsvorschlag machen.
Ja, knifflige Sachen sind toll
Beitrag erstellen
EinloggenKostenlos registrieren