Forenindex » Programmierung/Entwicklung » PHP und MySQL » Sortierproblem

Sortierproblem

Pozor
Beiträge gesamt: 892

30. Sep 2003, 11:21
Bewertung:

gelesen: 901

Beitrag als Lesezeichen
hallo,

mein problem ist folgendes, ich möchte meine datensätze nach 2 kriterien sortieren: Zeit und einem index

ich verwende ein timestamp (14), den ich selber zusammenstelle.
ich möchte eine sortierung erreichen, die alle in einem monat vorkommende datensätze nach zeit und index sortiert.
die einfachste lösung wäre den monat als eigene spalte in der tabelle zu speichern...

ich suche noch weitere ideen für dieses problem...
id timestamp status
1 20030120180011 0
2 20030120190011 2
3 20030120170011 2
4 20030208000011 2
5 20030222000011 0

sortiert:
1 20030120180011 0
3 20030120170011 2
2 20030120190011 2
5 20030222000011 0
4 20030208000011 2

gruss pozor

Sortierproblem

Anonym
Beiträge gesamt: 22827

6. Okt 2003, 12:10
Bewertung:

gelesen: 901

Beitrag als Lesezeichen
sortier doch einfach nach dem timestamp.
Denn wenn ich das jetzt richtig verstanden habe, ist ja z.b. 20030120180011 vor 20030120175900. Und die erste Zahl ist ja auch klar grösser als die zweite. Also, wo liegt das Problem?

mfg Stefan

Sortierproblem

Pozor
Beiträge gesamt: 892

6. Okt 2003, 13:02
Bewertung:

gelesen: 901

Beitrag als Lesezeichen
hallo,

für eine einfache sortierung ist dies sicherlich der richtige weg, ich möchte aber folgende sortierreihenfolge:

yahr monat status tag stunde min

dies ist mit einem einfachem timestamp nicht mehr möglich (soweit ich SQL kenne).

Ich verwende jetzt den timestamp nicht mehr. Ich habe die spalte aufgeteilt, jetzt funktioniert es wie es sollte.

Noch ne frage zum Schluss:

Ist es für die SQL-DB viel aufwändieger, wenn es mehr spalten in einer tabelle hat? (theoretisch exakt gleich viel daten pro reihe)

gruss pozor

(Dieser Beitrag wurde von Pozor am 6. Okt 2003, 13:04 geändert)

Sortierproblem

Miro Dietiker
Beiträge gesamt: 699

6. Okt 2003, 13:29
Bewertung:

gelesen: 901

Beitrag als Lesezeichen
Es macht Performancemässig immer sinn den geeigneten Datumstyp
zu wählen, der dir von einer Datenbank zur Verfügung gestellt wird,
denn speziell beim anwenden von Datumsfunktionen kann die datenbank
am besten mit diesem Datumtypen umgehen, und wird sonst immer über
Umwege deine Grössen einsetzen..

Ich hätte folgendes empfohlen:
- Du definierst von dem Feld in der Datenbank eine erste
Ausgabespalte Yahr&Monat
- Du definierst eine ausgabespalte Status
- Spalte Tag Stunde Minute
(Die abgeleiteten Datumsspalte mit einer funktion wie DATE_FORMAT
.. oder wie hiess die gleich? muss ich auch immer schnell nachschaun)

und dann kann man nach diesen temporären Spalten sortieren.

In deiner speziellen Fall wird die Ausgabe dadurch etwas langsamer!
Die Speicherung der Datumsgrössen jedoch macht so viel mehr sinn!
(Datenplatzoptimierung) und auch für fast alle anderen Funktionen
wirds viel einfacher!

GrEeZ: Miro Dietiker