(MySQL) Wie sortiere ich das am besten?
Knud
- php
0 Roger0 Knud0 Axel Richter0 Knud
0 sky
Hi,
ich hab eine Tabelle mit IP-Adressen nach denen ich die Liste auch gerne sortieren möchte.
Das Problem ist nur, dass ich das Feld als char definieren musste und nun die 10.1.10.13 vor der 10.1.10.2 angezeigt wird.
Genauso leider natürlich auch 10.1.13.2 vor der 10.1.2.2.
Wie kann ich das denn am sinvollsten verhindern?
Muss ich so ein kompliziertes order by substr,substr,substr,substr machen? (Ihr wisst was ich meine?)
Gruß,
Knud
Hi,
Muss ich so ein kompliziertes order by substr,substr,substr,substr machen? (Ihr wisst was ich meine?)
wieso kompliziert. ich denke mal das geht am schnellsten.
gruß.
roger.
Hi,
wieso kompliziert. ich denke mal das geht am schnellsten.
ich find so was schon recht kompliziert:
$abfrage .= " order by substring(substring_index(ipadresse,'.',1),0,2), substring(substring_index(ipadresse,'.',-2),0,2), substring(substring_index(ipadresse,'.',-2),0,2), substring(substring_index(ipadresse,'.',-1),0,2),abteilung";
vorallem weil er das noch nicht sooo richtig sortiert.
da kommt bei mir sowas raus:
10.1.41.15
10.1.6.1
10.1.6.2
10.1.6.3
10.1.1.1
10.1.1.2
10.1.1.3
10.1.8.2
10.1.8.3
10.1.3.10
10.1.3.11
10.1.3.12
das ist zwar schon 50% von dem was ich wollte, aber noch nicht so ganz.
Könnte das sein, dass ich immer zwei Stellen nehme ich aber die Punkte dann ab und zu drin hab?
Gruß,
Knud
Hallo,
$abfrage .= " order by substring(substring_index(ipadresse,'.',1),0,2), substring(substring_index(ipadresse,'.',-2),0,2), substring(substring_index(ipadresse,'.',-2),0,2), substring(substring_index(ipadresse,'.',-1),0,2),abteilung";
Was machst Du da? Schau Dir
SUBSTRING_INDEX(zeichenkette,begrenzer,zaehler)
nochmal genau an.
http://www.mysql.de/doc/de/String_functions.html
viele Grüße
Axel
Hi,
Was machst Du da? Schau Dir
SUBSTRING_INDEX(zeichenkette,begrenzer,zaehler)
nochmal genau an.
http://www.mysql.de/doc/de/String_functions.html
ich denke, das richtige (hoffe ich doch), jedenfalls hatte ich so die einzelnen "Felder" erhalten, als ich die ins selekt genommen hatte:
$abfrage .= " order by REPLACE(left(ipadresse,2),'.',''),
REPLACE(substring(substring_index(ipadresse,'.',-3),1,2),'.',''),
REPLACE(substring(substring_index(ipadresse,'.',-2),1,2),'.',''),
REPLACE(right(ipadresse,2),'.',''),abteilung";
Aber jetzt interpretiert der wohl wieder alles als String.
Habe jetzt zwar die Liste beginnend mit
10.1.1.1 + folgend
aber dann folgt wieder die Gruppe
10.1.10.1
Das Problem ist wohl jetzt nur noch die String-Interpretation. Also hab ich überall noch ein '* 1' drangehangen und siehe da,
es läuft jetzt.
Und das ist die Hauptsache, oder?
Wenn Du allerdings noch ne einfachere (schnellere) Methode weisst, ich würd mich freuen.
Gruß,
Knud
Hallo,
ich denke, das richtige (hoffe ich doch), jedenfalls hatte ich so die einzelnen "Felder" erhalten, als ich die ins selekt genommen hatte:
$abfrage .= " order by REPLACE(left(ipadresse,2),'.',''),
REPLACE(substring(substring_index(ipadresse,'.',-3),1,2),'.',''),
REPLACE(substring(substring_index(ipadresse,'.',-2),1,2),'.',''),
REPLACE(right(ipadresse,2),'.',''),abteilung";
Hm, und wenn ipadresse="192.168.120.2"
ipadresse = "10.0.1.2" oder
ipadresse = "192.168.120.2"
t1 = substring_index(ipadresse,'.',1)
t2 = substring_index(substring_index(ipadresse,'.',2),'.',-1)
t3 = substring_index(substring_index(ipadresse,'.',3),'.',-1)
t4 = substring_index(ipadresse,'.',-1)
order by
substring_index(ipadresse,'.',1)*1,
substring_index(substring_index(ipadresse,'.',2),'.',-1)*1,
substring_index(substring_index(ipadresse,'.',3),'.',-1)*1,
substring_index(ipadresse,'.',-1)*1
viele Grüße
Axel
Muss ich so ein kompliziertes order by substr,substr,substr,substr machen? (Ihr wisst was ich meine?)
jo!
viel spass :)
sky.