2016-07-31 3 views
-1

Ich habe vor kurzem Rock-Boden getroffen.1 | 18.07 | 0mysql Abfrage Sortierung mit unterschiedlicher Priorität

Ich versuche gerade eine Auswahl von Datenbankeinträgen nach Datum zu "sortieren" und wenn das Datum vergangen ist und Wert X nicht geändert wurde, dann an die Spitze der Liste anhängen und wenn der Wert sich unten geändert hat .

Vielleicht ist es ein bisschen besser, eine Art Grafik zu machen, die mein Problem erklärt.

Entry | "date" | X 
1  | 10.07 | 0 
1  | 11.07 | 1 
1  | 12.07 | 1 
1  | 13.07 | 1 
1  | 14.07 | 1 
1  | 15.07 | 1 
1  | 16.07 | 1 
1  | 17.07 | 1 
1  | 18.07 | 0 
1  | 19.07 | 1 

Diese zu

verwandeln sollte
Entry | "date" | X 
1  | 19.07 | 1 
1  | 17.07 | 1 
1  | 16.07 | 1 
1  | 15.07 | 1 
1  | 14.07 | 1 
1  | 13.07 | 1 
1  | 12.07 | 1 
1  | 11.07 | 1 
1  | 18.07 | 0 
1  | 10.07 | 0 

Ist das überhaupt möglich mit "reinem" mysql zu tun? Ich habe versucht, es funktioniert durch Sortieren nach Datum, aber das ist nicht das, was ich am Ende erreichen wollte.

SELECT * FROM table_entries ORDER BY start_date ASC LIMIT 25 

hat einen großen Tag

+0

'ORDER BY X DESC, start_date DESC' –

+0

' start_date ASC, X DESC' OR kann nur 'start_date DESC' genug für dich sein –

+0

Was für ein komisches Date ist das? –

Antwort

0

Wenn ich es richtig, wenn Sie möchten Ihre Reihen von X-Wert sortieren (Liste ganz oben haben) und sie dann nach dem Datum sortiert werden. Sie können es erreichen, indem Sie
ORDER BY X,start_date
in Ihrer Abfrage verwenden.
Sie können ASC oder DESC nach X angeben und start_date den gewünschten Effekt
Fragen wie diese werden wuld etwas zu bekommen:
SELECT * FROM table_entries ORDER BY X DESC, start_date ASC LIMIT 25

+0

Warum Sie Menschen hassen, so viel zu kommentieren –

+1

die Antwort ist kein Kommentar, Kommentare sollen Fragen stellen, um die Frage oder die Antworten zu klären – magicleon

+0

vielen Dank, das hat mir sehr geholfen. aber jetzt brauche ich einen Weg, um Items zu haben, die "abgelaufen" sind (Datum ist vergangen und Wert nicht geändert, also X = 0), und nicht "abgelaufene" Items unter em, vielleicht ein Bild erklärt es besser [link] (http://i.imgur.com/VxUCby4.png) – Alex

0

Fabrikat, um sowohl von 'x' und 'date' Feld. So werden alle Datensätze zuerst nach "x" und dann nach Datum sortiert.

SELECT * FROM table_entries ORDER BY x DESC, start_date DESC LIMIT 25 
+0

Warum hassen Leute es, so viel zu kommentieren. –