CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |

08.02.2005, 14:50:35
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
morsche,
ich habe mich schon im Forum umgeschaut und einige verwandte Themen gefunden, aber leider kann ich mein Problem wohl z.B. mit CAST bzw. CONVERT nicht lösen.
In meine SQL DB liegen Kategorie Bezeichnungen in einem VARCHAR Textfeld folgendermaßen vor:
1
1.1
1.2
2
2.1
[...]
12
12.1
12.1.1
12.2
etc.
Wenn ich das normal mit ORDER BY sortiere steht die 12 direkt hinter der 1 und vor der 2, was natürlich nicht sein darf. Leider kann ich die Zahlen aber auch in kein (mir bekanntes) Format umwandeln, dass die Sortierung ohne führende Nullen richtig bewältigen würde ohne dabei die Daten zu beschneiden wie z.B Float das tun würde.
Hat jemand eine Idee, wie man das lösen könnte?
Danke schonmal.
Gruß,
Florian
|

08.02.2005, 15:17:17
|
 |
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
Zitat:
Zitat von morsche
morsche,
ich habe mich schon im Forum umgeschaut und einige verwandte Themen gefunden, aber leider kann ich mein Problem wohl z.B. mit CAST bzw. CONVERT nicht lösen.
In meine SQL DB liegen Kategorie Bezeichnungen in einem VARCHAR Textfeld folgendermaßen vor:
1
1.1
1.2
2
2.1
[...]
12
12.1
12.1.1
12.2
etc.
Wenn ich das normal mit ORDER BY sortiere steht die 12 direkt hinter der 1 und vor der 2, was natürlich nicht sein darf. Leider kann ich die Zahlen aber auch in kein (mir bekanntes) Format umwandeln, dass die Sortierung ohne führende Nullen richtig bewältigen würde ohne dabei die Daten zu beschneiden wie z.B Float das tun würde.
Hat jemand eine Idee, wie man das lösen könnte?
Danke schonmal.
Gruß,
Florian
|
Nicht elegant aber möglich. Ein Feld hinzufügen "KATEGORIE_IND" und das Feld mit den umgeschüsselten Werten aus dem Kategorien-Feld füllen:
01
01.01
01.02
02
02.01
[...]
12
12.01
12.01.01
12.02
etc.
Anschließend Index drüber. Ein Versuch ist es wert.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|

08.02.2005, 17:19:51
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
das mit der führenden Null ist auch mein erster Ansatz gewesen, den ich aber schnell aufgegeben habe, da ich das in mehreren Tabellen ändern müsste und selbst wenn ich das schnell mit ein paar UPDATE Abfragen mache, muss ich dann noch entsprechende Änderungen im Script des Administrationsbereichs machen, wo man diese Werte eingibt, bzw. sie generiert werden. Darüberhinaus werden auch viele dieser Daten als XLS geliefert. D.h. ich müsste regelmäßig derartige Änderungen vornehmen bzw. immer ein Script drüber laufen lassen.
Gibt es vielleicht noch eine Möglichkeit, das nur durch die Art der Abfrage richtig zu sortieren? Oder vielleicht durch Mißbrauch eines bestimmen Datentyps?
Naja, ich bin für jede Hilfe dankbar :)
|

09.02.2005, 09:37:51
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
Hi,
eventuell hilft Dir auch die CASE- Funktion zusammen mit SUBSTRING von MySQL.
Versuch mal, ein SELECT im Stil von:
SELECT [spalte mit Komma],
CASE WHEN SUBSTRING([spalte mit Komma],1,2) LIKE ',' THEN CONCAT('0',SUBSTRING([spalte mit Komma],0,1),SUBSTRING([spalte mit Komma],2,100) AS hugo
ELSE CONCAT('0',[spalte mit Komma]) AS hugo
END
FROM tabelle
ORDER BY hugo
ACHTUNG: Dies ist jetzt komplett ungetestet, es sollte aber zumindest vom Prinzip her gehen, daß Du Dir quasi "on the fly" eine neue Spalte generierst, die das Komma nicht enthält und die Ziffer Null vor dem Ursprungswert hat.
Nach der kannst Du dann Sortieren.
Poste mal den endgültigen SELECT, wenn es geklappt hat. Zur Not setz' ich mich heute abend noch mal ran und teste auf meinem Rechner mit MySQL drauf.
HTH,
Andy
Geändert von diver-network (09.02.2005 um 09:41:36 Uhr)
|

09.02.2005, 14:28:31
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
Hi,
danke für den Tip mit dem CASE. Das hat mich auf eine gute Idee gebracht und jetzt funktioniert es auch.
Es handelt sich hierbei um ein Menü, dessen Menüpunkte durch diese 1.1.1. etc. Notation verteilt werden und letztlich muss ja bei der Anzeige einer bestimmen Menüebene immer nur nach der Zahl nach dem letzten Punkt sortiert werden. Daher habe ich mich bei der Sortierung jetzt immer auf diese Zahl konzentriert und falls erforderlich eine '0' vorangestellt.
Hier der Code:
SELECT
CASE WHEN REVERSE( SUBSTRING_INDEX( REVERSE( ID ) , '.', 1 ))<10
THEN CONCAT('0', REVERSE( SUBSTRING_INDEX( REVERSE( ID ) , '.', 1 )))
ELSE REVERSE( SUBSTRING_INDEX( REVERSE( ID ) , '.', 1 ))
END AS ID_sort
FROM Kategorien
ORDER BY ID_sort
Ich bedanke mich nochmal vielmals!
Gruß,
morsche
|

10.02.2005, 08:25:37
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 53
Beiträge: 4.748
|
|
Welche Version von MySQL nutzt Du? Ab 4.0.6 glaube ich gibt es CAST(), was nicht so chaotisch aussieht, wie Eure Lösung.
|

11.02.2005, 15:05:00
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
wie gesagt (s.o.) habe ich es mit cast nicht hinbekommen...
|

11.02.2005, 15:16:19
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
Geht auch einfacher: Versucht es doch mal hiermit:
SELECT ID FROM Kategorien ORDER BY ROUND( ID, 5 )
Geändert von Marilu (12.02.2005 um 08:51:03 Uhr)
|

14.02.2005, 16:59:35
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
ich muss dich leider enttäuschen - damit kommt man hier nicht weiter... ist kein Unterschied zur normalen Sortierung.
|

14.02.2005, 17:29:57
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
AW: Sortierung von 1.1.4, 3.4.12.1, 11.3.13.4, etc.
Stelle doch mal einen Dump der Tabelle hier rein. Ich versuche es dann mal. Ich arbeite nämlich öfters problemlos mit dem Konstrukt.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:02:53 Uhr.
|