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 ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign 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)
Hilfe Community Kalender Heutige Beiträge Suchen

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 17.02.2004, 21:20:47
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
ORDER BY numerisch, trotz VARCHAR?

Moin,

laut allmöglichen Foren und ähnlichen Etwasen geht es nicht, aber vielleicht wisst ihr es besser:
Wie kann ich mit MySQL einen String numerisch sortieren lassen? In der DB stehen mehrere Datensätze und ausgegeben sieht es momentan so aus:
Klasse 1
Klasse 10
Klasse 11
Klasse 12
Klasse 13
Klasse 2
Klasse 3

Das ist natürlich Mist. Hat wer eine DB-basierte Idee?

Erst auslesen und dann PHP-eigenen Funktionen sortieren wäre meine einzige Idee, aber es wäre nicht schön.


Dank euch,
Carsten
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #2  
Alt 17.02.2004, 22:33:42
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
Hi Carsten,

eine Idee, bei der mit "... + 0" ein Zahlentyp "erzwungen" wird, es sollte halt ab der 8. Stelle im String die Ziffern kommen...
Code:
SELECT (SUBSTRING(klassen_spalte,8,2) + 0) AS gugug FROM tabelle ORDER BY gugug
Weiss net, ob das schön ist, funktionieren tut's :-)

Geändert von chris17 (17.02.2004 um 23:01:00 Uhr)
Mit Zitat antworten
  #3  
Alt 18.02.2004, 07:56:12
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Gute Idee, nur ist diese auch ausgeschlossen, da in der Tabelle auch Dinge, wie 'Grundstufe', 'Sekundarstufe I' und so stehen...
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #4  
Alt 18.02.2004, 14:02:55
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
Es stehen also die konkreten Klassen 1-13 und/oder Sekundarstufe etc. in der gleichen Spalte drin?!
Die "Stufen", Grundstufe, Sekundarstufe etc. resultieren doch aus den Klassenzahlen 5-13, oder net?.(Ist bei mir schon etwas länger her...)
Wäre schön, wenn nur die Klasse drinstehen würde, und man dann im Skript die entsprechende Stufe ermitteln würde...

Macht aber nix, eine Möglichkeit wäre noch eine benutzerdefinierte Reihenfolge mit FIELD() festzulegen:
Code:
SELECT FIELD(klassen_spalte, 'Klasse 1','Klasse 2','Klasse 3', 'usw..','Sekundarstufe I') AS index,
      FROM
         tabelle 
      ORDER BY 
         index

Nachtrag zu meinem vorherigen Thread:
Mit RIGHT() ging's auch einfacher...
Code:
SELECT (RIGHT(klassen_spalte ,2)) AS gugug FROM tabelle ORDER BY gugug
Mit Zitat antworten
  #5  
Alt 18.02.2004, 14:10:51
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Die genannten und noch andere Datensätze sind so gewünscht, also bekommt er diese auch. Der Auftraggeber will Dynamik, also bekommt er sie auch. Lässt sich ja nix dran ändern.

Zitat:
Macht aber nix, eine Möglichkeit wäre noch eine benutzerdefinierte Reihenfolge mit FIELD() festzulegen
Wie soll das bei dynamischem Inhalt gehen...?


Gute Ideen hast du ja, aber um natsort() komme ich dann wohl doch nicht herum.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #6  
Alt 18.02.2004, 17:35:02
Fuchs Fuchs ist offline
Junior Member
 
Registriert seit: Jul 2003
Beiträge: 182
Ungetestet, duerfte aber funktionieren:

ORDER BY CAST(SUBSTRING_INDEX(RTRIM(field), ' ', -1) AS SIGNED INTEGER)
Mit Zitat antworten
  #7  
Alt 18.02.2004, 17:38:56
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Meine Fresse, Andre! Das funzt hervorragend.
Werde mich doch noch mal mit CAST beschäftigen müssen. War eigentlich der Meinung, dass das nicht hilft...


Danke euch.




Edit: Doch nicht ganz perfekt:
Grundstufe
Vorschulbereich
Sekundarstufe I
Sekundarstufe II
Klasse 1
Klasse 2
Klasse 3
Klasse 4
Klasse 5
Klasse 6
Klasse 7
Klasse 8
Klasse 9
Klasse 10
Klasse 12
Klasse 13

Verbesserungsvorschlag? Doppelte Sortierung? Also erste und letzte Zeichen oder so?
__________________
sic!
--> http://dbCF.de/

Geändert von ­c­4­ (18.02.2004 um 17:42:14 Uhr)
Mit Zitat antworten
  #8  
Alt 18.02.2004, 22:46:24
Fuchs Fuchs ist offline
Junior Member
 
Registriert seit: Jul 2003
Beiträge: 182
Ungetestet aber die richtung duerfte stimmen:


order by
left(field, length(filed)-length(substring_index(field, ' ', -1))), cast(substring_index(field, ' ', -1) as unsigned integer);


HTH Andre
Mit Zitat antworten
  #9  
Alt 19.02.2004, 07:56:09
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
Ja, es wird...
Grundstufe
Vorschulbereich
Klasse 1
Klasse 2
Klasse 3
Klasse 4
Klasse 5
Klasse 6
Klasse 7
Klasse 8
Klasse 9
Klasse 10
Klasse 12
Klasse 13
Sekundarstufe I
Sekundarstufe II
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #10  
Alt 02.02.2006, 17:16:24
nrsdesign nrsdesign ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 1
AW: ORDER BY numerisch, trotz VARCHAR?

Hallo,

sorry, wenn ich diesen alten Thread nochmal erfrische...

Wie kann ich denn nach 2 Spalten (Typ VarChar) sortieren ?

D.H. ich habe eine spalte row1 = VARCHAR und eine row2 = VARCHAR.

Jetzt möchte ich, dass Mysql erst nach spalte row1 und dann nach spalte row2 sortiert.

Ist das möglich ?

Vielen Dank
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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 16:12:49 Uhr.


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


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