[MySQL/PHP] 2mal ordnen

Gollum

Loswetten.de
ID: 96060
L
20 April 2006
2.327
188
Hallo,

ich hoffe ihr könnt mir weiterhelfen ;)

Hab eine SQL-Tabelle in der Spielegewinner gespeichert werden. Es gibt unter anderem die Spalten 'zeit' und 'gewinn'.
Nun möchte ich zeitlich die letzten 15 Gewinner haben und diese Gewinne wiederrum sortiert ausgeben.

Und nun eben die Frage wie ich gleichzeigt nach 'zeit' und 'gewinn' sortieren kann.
Geht es in einer Mysql-Abfrage?
Habe da schon verschiedene Versionen ausprobiert, aber nichts funktionierte richtig.
Oder soll ich es erstmal in der sql-abfrage nach zeit sortieren lassen und dann bei der ausgabe in php nach den gewinn sortieren?
Wenn ja wie?

Vielen Dank schonmal für die Hilfe,

Gruß Gollum
 
PHP:
$query = "SELECT * FROM tbl ORDER BY zeit, gewinn";

damit sortiert er erst nach zeit und dann nach gewinn... beides aufsteigend.. wenn du eins daon absteigend haben willst musst du noch hinter das kriterium DESC schreiben also:

PHP:
$query = "SELECT * FROM tbl ORDER BY zeit DESC, gewinn";
PHP:
$query = "SELECT * FROM tbl ORDER BY zeit, gewinn DESC";
PHP:
$query = "SELECT * FROM tbl ORDER BY zeit DESC, gewinn DESC";

ich hoffe ich habe das probelm richtig verstanden^^

mfg
Gsus
 
vllt postest du mal deinen code und was genau damit gemacht werden soll... eigtl trennt man verschiedene sortierungen einfach durch ein komma....

mfg
Gsus
 
hast du die abfrage als variable vorliegen ?

dann so:

PHP:
$query = "SELECT * FROM tbl ORDER BY \''.$zeit.'\', \''.$gewinn.'\'";

ansonsten hilft wohl nur etwas code weiter
 
Möp.

Wenn ich mich recht erinnere kannst du das ORDER BY so nicht verwenden.

Das würde eher sowas sortieren:


Code:
[FONT="Courier New"]1  1
1  4
1  7
2  3
2  8
2  12
3  1
3  19
4  7
4  88[/FONT]

(bei foo ASC, bar ASC)


Oder soll ich es erstmal in der sql-abfrage nach zeit sortieren lassen und dann bei der ausgabe in php nach den gewinn sortieren?
Hm... würde ich eventuell so machen.
Ansonsten gibt's noch Unterabfragen (aber damit hab' ich nie wirklich was gemacht).

Ansonsten könntest du auch die Zeit des Spielgewinners auf Position 15 erst auslesen und dann als Bedingung bei der Abfrage angeben, dass die Zeit größer sein soll und nach Gewinn sortieren. [Edit: eventuell kannst du das dann eben in einer Unterabfrage packen....]
 
Hab eine SQL-Tabelle in der Spielegewinner gespeichert werden. Es gibt unter anderem die Spalten 'zeit' und 'gewinn'.
Nun möchte ich zeitlich die letzten 15 Gewinner haben und diese Gewinne wiederrum sortiert ausgeben.

Und nun eben die Frage wie ich gleichzeigt nach 'zeit' und 'gewinn' sortieren kann.

Geht denke ich nur mit Unterabfrage:
Code:
select ..., gewinn from 
   (select ..., gewinn from Tabelle ORDER BY zeit DESC LIMIT 15) AS temp
 order by gewinn DESC

Die Abfrage ist nicht getestet.
 
Warum das so nicht funktioniert wundert mich auch...

@Gollum: Könntest du mal für mich deine Query posten?
Denn so wie es Gsus geschrieben hat habe ich es auch immer sortiert und bei mir klappts...

das hab ich mich auch gefragt... hab mich schon gewundert was ich da gelernt habe xD

aber dann bin ich ja doch nicht blöd^^

mfg
Gsus
 
Warum das so nicht funktioniert wundert mich auch...
Die Sortierung nach Gewinn greift nur, wenn 2 Spiele zur selben Zeit gemacht wurden. Und das is wohl nicht der Fall.

Man muss also erst mit dem Subquery die letzten 15 Spiele selektieren, ehe man diese nach Gewinn sortieren kann.
 
hier mal ein screen



wie ihr seht, wird der gewinn nicht richtig sortiert.


Aber wie gesagt, dass von Sebbo hat geklappt.