Hi,
ich will innerhalb meines Projektes eine Diaschow proggen, dessen Bilder (jedes einzeln) in MySQL eingetragen sind. Die Diashow muss in unterschiedlichen Fällen anders Sortiert werden. Ich habe eine Seite und übergebe immer die ID des Records im meiner MySQL table. Habe einen Vor- und Zurückbutton bei denen ich die nächste ID bzw. vorherige ID ,ausgehend von der aktuellen ID, eintragen muss. So, das ist noch einfach!
// 1. Sortiert nach ID (fertig) Nächste ID: # SELECT MIN(id) FROM tabelle WHERE id > aktuelleid Vorherige ID: # SELECT MAX(id) FROM tabelle WHERE id < aktuelleid
Das würde bedeuten, dass die Bilder sortiert sind, wie sie eingetragen worden sind.
// 2. Sortiert nach timestamp
Der timestamp der in der Tabelle eingetragen ist, ist nicht aktuell vom Eintragen (Würde ja sonst die gleiche Reihenfolge wie ID geben)!
Einfach das gleiche wie bei ID nur mit timestamp wird nicht klappen, da der timestamp nicht unique ist. Auf folgende Art und Weise kann ich den nächsten Timestamp bekommen.
Nächster Timestamp: # SELECT MAX(timestamp) FROM tabelle WHERE timestamp <= aktuellertimestamp and id <> aktuelleid - "timestamp <= aktuellertimestamp" damit falls der gleiche timestamp nochmal kommt, dass dieser auch selected werden kann
"id <> aktuelleid" damit nicht der aktuelletimestamp nochmal genommen wird
Jetzt hätte ich zwar den folgenden timestamp und was ist mt der zugehörigen ID die ich für mein Script brauche?
# SELECT id FROM tabelle WHERE timestamp = timestamp Frage -> Das kann ich nicht machen denn stellt euch vor es gibt 3 mal den gleichen timestamp. Dann bekomme ich 3 ids und welche ist richtig?
// 3. Sortiert nach Name
Wenn ich das ganze jetzt noch nach Name sortiert haben möchte!? MySQL kann zum Glück Strings mit einfachen Operatoren vergleichen (z.B. "abc" > "aba") vielleicht hilft mir das ja weiter.
Frage -> Wenn ihr was den Namen betrifft ne Lösung habt sagts nur bitte.
---------------
Langsam wird mir das ein bisschen zu kompliziert

, hoffentlich versteht jemand was ich hier lang und breit erklärt habe
Danke im Voraus,
Ingmar