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 |
17.02.2004, 21:20:47
|
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
|
17.02.2004, 22:33:42
|
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)
|
18.02.2004, 07:56:12
|
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...
|
18.02.2004, 14:02:55
|
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
|
18.02.2004, 14:10:51
|
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.
|
18.02.2004, 17:35:02
|
Junior Member
|
|
Registriert seit: Jul 2003
Beiträge: 182
|
|
Ungetestet, duerfte aber funktionieren:
ORDER BY CAST(SUBSTRING_INDEX(RTRIM(field), ' ', -1) AS SIGNED INTEGER)
|
18.02.2004, 17:38:56
|
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?
Geändert von c4 (18.02.2004 um 17:42:14 Uhr)
|
18.02.2004, 22:46:24
|
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
|
19.02.2004, 07:56:09
|
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
|
02.02.2006, 17:16:24
|
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
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:12:49 Uhr.
|