ich möchte meine SQLAuslesung nach „laufnr“ natürlich sortiert
haben.
die Abfrage lautet:
„SELECT * from fh_pr_ausschuss ORDER by laufnr“
Die Tabelle sieht aus wie folgt:
id | laufnr | text
1 | 1 | blubb
2 | 22.10 | bla
3 | 3.1 | jopp
etc.
Eigentlich werden die Daten natürlich sortiert. Dazu muss
allerdings der Feldtyp auch numerisch sein.
Anscheinend ist Deine laufnr vom Typ varchar o.ä., so dass
nicht die numerische Sortierung, sondern eine String-
Sortierung durchgeführt wird.
Wie kann ich die natürlich sortieren ???
Zwei Möglichkeiten:
Ändere den Feldtyp auf Double(x,y)
Folgende Abfrage verwenden:
SELECT *, (laufnr * 1.0) AS neuelaufnr FROM fh_pr_ausschuss ORDER BY neuelaufnr
Damit wird der Wert laufnr automatisch auf numerisch ge-‚casted‘.
Ich hab in php.net nachgeschaut, bin aber zu keinem
vernünftigen Ergebniss gekommen
Hallo,
ich möchte meine SQLAuslesung nach „laufnr“ natürlich sortiert
haben.
die Abfrage lautet:
„SELECT * from fh_pr_ausschuss ORDER by laufnr“
Die Tabelle sieht aus wie folgt:
id | laufnr | text
1 | 1 | blubb
2 | 22.10 | bla
3 | 3.1 | jopp
etc.
Wie kann ich die natürlich sortieren ???
Ich hab in php.net nachgeschaut, bin aber zu keinem
vernünftigen Ergebniss gekommen
zumal im $dpo=mysql_fetch_array($abfrage) ja mehrere Werte
neben laufnr vorhanden sind.
Sammle den ganzen Kram in einem Array:
while($d=mysql_fetch_array($abfrage))
$data[$d[‚laufnr‘]] = $d;
und lasse das dann mit uksort nach den Schlüsseln (also der laufnr) sortieren:
$data_neu = uksort($data, ‚version_compare‘);
version_compare ist zwar eigentlich für Versionsnummern, sollte aber das tun, was du willst. Ansonsten versuche da einmal strnatcmp, die Funktion kannte ich bis jetzt noch gar nicht…
Mit while(list(,$val)=each($data_neu)) echo $val[‚text‘];
kannst du dann die Daten weiterverarbeiten. Das ganze funktioniert nur so, wenn die laufnr eindeutig ist, ansonsten ist etwas mehr Code erforderlich…