SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 08.02.2005, 14:50:35
morsche morsche ist offline
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
Mit Zitat antworten
  #2  
Alt 08.02.2005, 15:17:17
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #3  
Alt 08.02.2005, 17:19:51
morsche morsche ist offline
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 :)
Mit Zitat antworten
  #4  
Alt 09.02.2005, 09:37:51
diver-network diver-network ist offline
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)
Mit Zitat antworten
  #5  
Alt 09.02.2005, 14:28:31
morsche morsche ist offline
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
Mit Zitat antworten
  #6  
Alt 10.02.2005, 08:25:37
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
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.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #7  
Alt 11.02.2005, 15:05:00
morsche morsche ist offline
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...
Mit Zitat antworten
  #8  
Alt 11.02.2005, 15:16:19
Marilu Marilu ist offline
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)
Mit Zitat antworten
  #9  
Alt 14.02.2005, 16:59:35
morsche morsche ist offline
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.
Mit Zitat antworten
  #10  
Alt 14.02.2005, 17:29:57
Marilu Marilu ist offline
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.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:53:09 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt