tabellenabfrage sortiert nach zahlen 1,2,3...10,11,12..
tabellenabfrage sortiert nach zahlen 1,2,3...10,11,12..
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...
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..
Den Typ des Feldes auf Integer setzen und das "n/a" in Form von NULL, -1 o.ä. darstellen.oh hat geschrieben:was kann ich tun um dieses problem zu umgehen?
...
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
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
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....
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...
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...
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.
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.