You are not logged in.

Lucky

Erfahrener Schreiberling

  • "Lucky" is male
  • "Lucky" started this thread

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

1

Wednesday, August 30th 2006, 4:18pm

SQL Sortierung

Hallo!

Wenn ich meine SQL Ausgabe sortiert haben möchte, mache ich einfach ein Order by und alles ist okay. Allerdings möchte ich nach folgendem sortieren:

1.6
1.7.3.2
2.0
11.2

Also wie bei einem Inhaltsverzeichnis! Leider sortiert die order by Funktion hier falsch, was kann ich tun??? Eine eigen Funktion für das sortieren zu Schreiben wäre möglich, aber doch sehr zeitaufwändig für mal eben auf die Schnelle... Oder doch nicht?

Bin für jeden Rat dankbar


Grüße
no risk no fun, no brain no pain nor gain

This post has been edited 1 times, last edit by "Lucky" (Aug 30th 2006, 4:19pm)


Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

2

Wednesday, August 30th 2006, 4:42pm

SQL ist jetzt schon ein wenig her, aber kannst du nicht über Stringbefehle den "." rausnehmen und dann order by drauf loslassen.
Sorry, wenn das jetzt 'nen Schuss in den Ofen ist, wie gesagt SQL ist schon ein wenig her (:
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

Lucky

Erfahrener Schreiberling

  • "Lucky" is male
  • "Lucky" started this thread

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

3

Wednesday, August 30th 2006, 4:46pm

Hi,

dann wäre aber:

1.1.1.2

NACH

10.1

weil 1112 größer ist als 101

---------------------------------------
Ich hätte grade nur die Idee für jeder Punkt eine Spalte zu haben, es auf 6 Ebenen zu begrenzen und dann der Reihenfolge nach durch die Spalten zu sortieren

SELECT *
FROM hier
ORDER BY A, B, C, D, E, F
LIMIT 0 , 30

Wenns nicht einfacher geht, muss ich das wohl nehmen :(
no risk no fun, no brain no pain nor gain

This post has been edited 2 times, last edit by "Lucky" (Aug 30th 2006, 4:54pm)


XAX

Junior Schreiberling

  • "XAX" is male

Posts: 207

Date of registration: Dec 25th 2004

4

Wednesday, August 30th 2006, 4:51pm

eine funktion schreiben die
1.6
1.7.3.2
2.0
11.2
in
1,6
1,732
2,0
11,2
wandelt.
also den ersten punkt durch ein komma ersetzen und die anderen punkte entfernen

Bin jetzt aber gerade nicht sicher ob man bei sql punkt oder komma benutzt...

This post has been edited 2 times, last edit by "XAX" (Aug 30th 2006, 4:54pm)


Lucky

Erfahrener Schreiberling

  • "Lucky" is male
  • "Lucky" started this thread

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

5

Wednesday, August 30th 2006, 4:57pm

Auch dann wäre folgendes ein Problem:

1.10.10.1
1.101.0.1

=

1,10101
1,10101

Die beiden wären ja identisch! :(
no risk no fun, no brain no pain nor gain

This post has been edited 1 times, last edit by "Lucky" (Aug 30th 2006, 4:57pm)


Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

6

Wednesday, August 30th 2006, 5:35pm

Hm, stimmt, hab ich übersehen. Faszinierendes Problem.
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

dfex

Junior Schreiberling

  • "dfex" is male

Posts: 248

Date of registration: Dec 11th 2001

7

Wednesday, August 30th 2006, 5:50pm

Ohne eine Procedure, die einem die als String gespeicherte Hierarchie aufdröselt, lässt sich hier nicht viel sortieren.

Am besten du überdenkst die Art der Speicherung deiner Hierarchie nochmal etwas und wirfst dabei einen Blick auf Standardverfahren zur Speicherung von hierarchischen Daten in relationalen Datenbanken.

Einen leicht verständlicher Artikel, fast schon Anleitung, findest du z.B. hier:
http://dev.mysql.com/tech-resources/arti…hical-data.html

XAX

Junior Schreiberling

  • "XAX" is male

Posts: 207

Date of registration: Dec 25th 2004

8

Wednesday, August 30th 2006, 6:32pm

Neuer Vorschlag:
Den String in die einzelnen Zahlen zerlegen. Die Zahlen dann vorne mit x Nullen auffüllen.
Dann alle Zahlen wieder zusammensetzen.

1.10.10.1
1.101.0.1

=

1,0010 0010 0001
1,0101 0000 0001

Lucky

Erfahrener Schreiberling

  • "Lucky" is male
  • "Lucky" started this thread

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

9

Wednesday, August 30th 2006, 8:18pm

Herzlichen Dank Euch!

Ich mach mir mal Gedanken, welche Lösung ich implementieren werde.

Also dritte Lösung habe ich wie gesagt eine begrenzte Art von Ebenen (Bsp.: 10) und für jede Ebene eine Spalte. Dann kann ich ganz einfach jede Spalte nacheinander sortieren lassen mit Order by...

@ XAX:
Bei Deiner Lösung ist das Komme überigens überflüsseg :)



Mal schaun! Ich sag dann Bescheid...


Grüße!
no risk no fun, no brain no pain nor gain

This post has been edited 1 times, last edit by "Lucky" (Aug 30th 2006, 8:20pm)