Seite 1 von 1
tabellenabfrage sortiert nach zahlen 1,2,3...10,11,12..
Verfasst: 07.04.2003 20:13
von oh
ich habe eine tabelle mit einer spalte namens position.
die werte die dort vorkommen sind fortlaufend 1,2,3 etc.
es können aber auch nicht- nummerische werte vorkommen.
z.b.: "n/a" also strings.
daher lege ich diese spalte als textfeld an.
nun möchte ich aber die ausgabe sortieren lassen.
es sollte eigentlich die bei numerischen felder normale
reihenfolge 1,2,3,4,5,6,7,8,9,10,11,12 dabei herauskommen.
aber beim sortieren erscheint folgende reihenfolge:
1,10,11,12,13,14,15,16,17,18,19,2,20...
logisch ja bei textfeldern, aber gibt es eine möglichkeit in einer sql anweisung die order funktion anzupassen`?
meine sql abfrage lautet:
............ ORDER BY position
was kann ich tun um dieses problem zu umgehen?
wäre wie immer dankbar für eure hilfe...
Re: tabellenabfrage sortiert nach zahlen 1,2,3...10,11,12..
Verfasst: 07.04.2003 20:21
von Pyramide
oh hat geschrieben:was kann ich tun um dieses problem zu umgehen?
Den Typ des Feldes auf Integer setzen und das "n/a" in Form von NULL, -1 o.ä. darstellen.
;)
Verfasst: 08.04.2003 16:10
von oh
ja aber genau das will ich ja nicht!
ich muss die werte aus einer excel tabelle übernehmen und möchte nicht auf spezielle eintragungen achten müssen!
daher auch wie oben beschrieben die aufgabe..
Verfasst: 08.04.2003 17:25
von Pyramide
Dann musst du die Daten nach dem auslesen sortieren, z.B. mit PHP. Das ist allerdings extrem kompliziert. Wenn du Zahlen in ein Textfeld schreibst, kannst du von der Datenbank nicht erwarten, daß sie diese wie Zahlen behandelt.
Verfasst: 08.04.2003 21:17
von Seether
Naja kompliziert ist es nicht, aber bei größeren Tabellen dauert es natürlich eine Weile.
S.
...
Verfasst: 09.04.2003 18:30
von oh
ja manche sachen gehen eben nicht so einfach...
da nützt es auch nix wenn man mit dem kopf durch die wand will!!

ich habe mich entschlossen die excel-tabellen doch zu bearbeiten bevor ich sie importiere!
dort kann ich eine zahl > 1000 z.b. eingeben.
so funktioniert das sortieren bei <999 eintragungen
und ich wandel die ausgabe dann mit einer abfrage einfach wie gewünscht um z.b. in N/A
Verfasst: 10.04.2003 21:07
von |Crazor|
naja, schwer ists nicht. tipp: die ganze tabelle in nen array stopfen und dann durch
natsort() oder
natcasesort() jagen. sortiert so, wie ein mensch auch sortieren würde....
Verfasst: 10.04.2003 21:52
von Seether
Ja wie gesagt, schwer ist es nicht, aber bei großen Datenmengen kommt es sehr auf den Algorithmus an, will ja keiner lange warten müssen.
S.
Verfasst: 10.04.2003 22:01
von |Crazor|
naja, aber viel langsamer als die datenbank kanns ja auch nciht sein, die db benutzt ja auch irgend nen algo.
schreib halt nen kurzen bench, der z.b. standart ORDER BY der db mit nem auslesen und sortieren per php vergleicht. (halt ohne die N/A's und son schnickschnack). das eine wird nicht viel schneller als das andere sein...
Verfasst: 11.04.2003 15:54
von Pyramide
Die Datenbank wird immer schneller sein, da sie speziell für solche Aufgaben optimiert ist. Ausser sie liegt auf einem anderen Server, dann muss man noch Leistung+Auslastung mit einbeziehen. Wieviel schneller das ist, hängt vom Datenbanksystem, der Menge der Daten, der Speicherungsart (z.B. MyISAM oder HEAP bei MySQL) und diversen anderen Parametern ab .
Insbesondere wenn du nur einen Teil der Daten (z.B. die 10 größten Datensätze) benötigst, solltest du die Sortierung von der Datenbank durchführen lassen, weil du dir so die Übertragung der nicht benötigten Daten sparen kannst.