[SQL] Sortierung von Datensätzen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Jens
Beiträge: 404
Registriert: 31.03.2004 07:51:08
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

[SQL] Sortierung von Datensätzen

Beitrag von Jens » 09.09.2005 09:10:22

Hallo Forum!

Mein Ziel ist es anhand von Datensätzen eingetragen Daten auszulesen die in der Datenbank vorhanden sind. ( Es sind mehrere Einträge pro Tag)

Ich habe folgendes Problem. Ich hab in einer Datenbank chronologisch richtige Datums Einträge. Bedeutet so in etwa:

31.08.05
01.09.05
02.09.05
03.09.05

etc.

Wenn ich eine normale SELECT Abfrage ohne Extra Optionen mache ist auch alles in richtiger reihenfolge aber halt alles mehrfach, nur wenn ich entweder mit ORDER BY sortiere dann sortiert er falsch bzw. nicht so wie ich das möchte.

01.09
03.09
31.05

Das blöde ist wenn ich ein SELECT DISTINCT auf die Datensätze mache oder mit GROUP BY arbeite sortiert er automatisch!! Das soll er aber nicht deswegen bekomme ich die Datensätze nicht sauber in eine Reihenfolge, ich will jetzt aber auch verhindern das ich das groß Programmieren muss.

Habe ich vieleicht was übersehen?

R.Heller
Beiträge: 82
Registriert: 28.08.2003 13:52:48
Wohnort: Köln

Beitrag von R.Heller » 09.09.2005 09:31:37

Hm ... ich kann dir zwar SQL-maßig keine Sofortlösung anbieten, jedoch bin ich das Problem in meinen Anwendungen elegant durch ein anderes Format umgangen:

Daten (Mehrzahl von Datum?) werden bei mir "yyyy-mm-dd" formatiert. Dann hab ich auch keinerlei Probleme mit der Sortierung. Diese Darstellungsweise ist mittlerweile - glaub ich - auch laut Duden in der deutschen Rechtschreibung akzeptiert.

In welchem Format ist eigentlich dein Feld angelegt? Richtig als Datum- oder als Textfeld?

Gruß
Roland

Benutzeravatar
Jens
Beiträge: 404
Registriert: 31.03.2004 07:51:08
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Jens » 09.09.2005 09:50:38

ist leider als textfeld angelegt :)

Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

Beitrag von Warlord » 09.09.2005 11:25:28

Du kannst in der Datenbank deine Daten nicht chronologisch ablegen. Das sieht vielleicht gerade bei kleinen Datenmengen so aus, aber generell organisiert sich die Datenbank selbst, so daß dieser Umstand nicht immer so sein muß.

Generell solltest Du aber auch den Datums-Datentyp verwenden. Dann mußt Du Dich auch nicht um korrekte Eingaben kümmern, da die DB sowas wie 30.02.2005 nicht zulassen wird.

Des weiteren ist dann auch das Format egal, da dies einzig und allein für die Ausgabe wichtig ist. Für's Sortieren ist es egel ob ISO, GERMAN oder sonst was...

Benutzeravatar
Jens
Beiträge: 404
Registriert: 31.03.2004 07:51:08
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Jens » 09.09.2005 13:03:49

ich kann aber leider nicht eben den datentyp ändern. Die Daten kommen aus einem anderen System auf dem ich keinen Einfluss habe, ich werd mir was einfallen lassen trozdem thx :)

Hätte ja sein können das man SQL technisch was hätte machen können :)

Benutzeravatar
eC
Beiträge: 354
Registriert: 24.07.2002 13:34:13
Wohnort: karlsruhe

Beitrag von eC » 09.09.2005 13:11:21

Jens hat geschrieben: Hätte ja sein können das man SQL technisch was hätte machen können :)
Hi kannst Du das ganze nicht in ein Datum konvertieren und dann sortieren.
PseudoCode:

Code: Alles auswählen

select id, char_to_date(datum) from tabelle order by 2;
oder so ;)

gruss

eC

Antworten