PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL ORDER By


HS-78
17.06.2002, 16:44:31
Hi,

da PHP und MySQL ja irgendwie zusammengehören mal eine Frage dazu.

Ich habe hier eine Tabelle mit Radiosendern und möchte die Ausgabe nach Frequenz sortiert haben. Mit einem Double Wert für die Frequenz ist das auch kein Problem, nur ist mein Frequenzwert ein varchar(16), da dort auch solche Einträge '87,05-107,8' abgelegt werden.

Problem ist nun, das MySQL halt erst die 100er (wegen der 1) sortiert ausgibt, und dann die unter 100. Ich wollte nun mittels REPLACE() das Komma zu Punkt machen, was auch klappt und dann mittel CAST() bzw. CONVERT() den Wert nach Double umwandel. (Alles falls kein '-' drin ist). Nur gibt es ja die CAST() Funktion erst ab MySQL 4 und das hab ich nicht auf dem Server. Gibt es da also eine andere Möglichkeit der Typumwandlung???

Danke, HS.

Nev
17.06.2002, 18:11:32
Hi

Eine Möglichkeit wäre es in vor 2-stelligen zahlen eine 0 zu setzten
Wenn du dann sotierst kommt zu erst die 0

bei der Ausgabe ersetzt du die voranstehende 0 durch nichts.


Andere Möglichkeit fällt mir derzeit ned ein

Progman
17.06.2002, 23:12:01
Vielleicht sollteste das Datenbank Layout ändern und die Werte als FLOAT speichern.

HS-78
18.06.2002, 09:40:05
Genau das wollte ich ja grade nicht, da es auch Einträge wie '87,5-108' für ganze Frequenzbereiche gibt.

Ich habe es jetzt so gemacht, das ich die Daten in 2 Arrays einlese (einmal Werte unter 100, einmal ab 100) und die dann mit array_merge() zusammenfüge. Das sind dann zwar 2 DB Zugriffe, aber macht sich von PHP her sehr einfach und die MySQL Abfrage ist auch nicht komplexer geworden.

Progman
18.06.2002, 13:46:00
Dann erstelle 2 Spalten freg_von und freg_bis und speicher da die Zahlen rein. Dann sollte es einfacher gehen die Daten richtig auszulesen.

Nev
18.06.2002, 14:46:58
@Progman

gute Lösung