tabellenabfrage sortiert nach zahlen 1,2,3...10,11,12..

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
oh
Mitglied
Beiträge: 21
Registriert: 14.08.2002 15:05

tabellenabfrage sortiert nach zahlen 1,2,3...10,11,12..

Beitrag 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...
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: tabellenabfrage sortiert nach zahlen 1,2,3...10,11,12..

Beitrag 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.
oh
Mitglied
Beiträge: 21
Registriert: 14.08.2002 15:05

;)

Beitrag 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..
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
Seether
Mitglied
Beiträge: 1446
Registriert: 10.10.2002 23:42

Beitrag von Seether »

Naja kompliziert ist es nicht, aber bei größeren Tabellen dauert es natürlich eine Weile.


S.
oh
Mitglied
Beiträge: 21
Registriert: 14.08.2002 15:05

...

Beitrag 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
Benutzeravatar
|Crazor|
Mitglied
Beiträge: 78
Registriert: 09.04.2003 15:43
Wohnort: Jever
Kontaktdaten:

Beitrag 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....
Seether
Mitglied
Beiträge: 1446
Registriert: 10.10.2002 23:42

Beitrag 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.
Benutzeravatar
|Crazor|
Mitglied
Beiträge: 78
Registriert: 09.04.2003 15:43
Wohnort: Jever
Kontaktdaten:

Beitrag 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...
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“