PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Nummerierung mit Jahreszahl - sortierungsproblem (http://www.selfphp.de/forum/showthread.php?t=25123)

tsunamitsunami 02.12.2013 18:57:00

Nummerierung mit Jahreszahl - sortierungsproblem
 
Hallo zusammen,
ich bräuchte mal einen Denkanstoß-
Ich generiere mir via php eine fortlaufende Nummer mit Jahreszahl. Beim Jahreswechsel fange ich bei 1 an. ->

PHP-Code:

$sql select nummer from tabelle where YEAR(datum)=212 or YEAR(datum) = (2013order by nummer 

20121
20122
20123
20131
20132
20133
usw. das klappt bei der Genrierung.

Mein Problem besteht nun bei der Sortierung, sobald die Nummer > 10 werden

201110
201111
Dann sortiert der natürlich 20119, 20121...
Egal ob als string oder zahl das geht nicht. Daher habe ich die Nummer ab gespaltet und dann

sort by datum, nummer desc

Ändere ich nun von desc auf asc, passiert leider nichts. Keine Änderung. Zudem wenn ich mehr als 1 Jahr habe gehts auch nicht. Sortiere ich nur nach der nummer bekomme ich ebenfalls Probleme mit den Jahreszahlen.

20131
20129

Ohne Jahreszahl ginge auch, nur habe ich dann uU sehr schnell sehr lange Zahlen.

Wie stelle ich es an, dass ich logisch sortiere?

tsunamitsunami 03.12.2013 07:52:46

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Hoffe es ist klar geworden?
Will halt pro Jahr sortieren. Also 2012
20121
20122
20123
...
201210
201211


Und zB 2013
20131
20132
20133
...
201310
201311


Normal würde ich mit Nullen auffüllen. Nur
2013000001
2013000002
2013000003
Sieht irgendwie doof aus..

DokuLeseHemmung 03.12.2013 08:01:00

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Zitat:

Ohne Jahreszahl ginge auch, nur habe ich dann uU sehr schnell sehr lange Zahlen.
Was gibts gegen lange Zahlen zu sagen?

tsunamitsunami 03.12.2013 08:40:51

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Ganz hinten an steht eine Druckfunktion und die Nummern, wen die dann 20 Stellen haben...

Irgendeine Idee für die Sortierung? Was weiß ich Jahreszahl nach hinten oder mit Trennzeichen. Suche halt irgendeine Funktion, die alphanumerisch / menschlich sortiert.

also
1
2
3
4
5
6
7
8
9
10
11

statt
1
10
11
12
13
14
15
16
17
18
19
2

Was mir gerade so in den Sinn kommt, ist eine Hilfsspalte.

Da hinein dann zb
0000001
0000002
0000003
...
0000010

Danach sortieren und die nummer anzeigen...

DokuLeseHemmung 03.12.2013 08:49:24

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Zitat:

also
1
2
3
4
5
6
7
8
9
10
11

statt
1
10
11
12
13
14
15
16
17
18
19
2
Ein ORDER BY, auf einer numerischen Spalte tut genau das gewünschte.

tsunamitsunami 03.12.2013 09:04:34

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Wie ich im 1. Post geschrieben habe, geht das nicht, weil ich zB die 1 mehrfach habe (2013,2012,2011...)
=>
2013 1
2012 1
2011 1

Packe ich die Jahreszahl mit in die Spalte kriege ich ebenfalls Probleme ab der 2 Ziffer.
2012 1
2013 1
2013 10
2012 10

DokuLeseHemmung 03.12.2013 09:25:11

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Zitat:

Packe ich die Jahreszahl mit in die Spalte kriege ich ebenfalls Probleme ab der 2 Ziffer.
Dann lass das doch....

Du weißt, dass es nicht funktioniert.
Warum willst du es dann?

Und noch ein Argument:
Du hast eine "datum" Spalte.
Da steht das Jahr drin.
Und eine Sortierspalte, auch mit Jahr drin.
Das ist eine Redundanz, und damit ein rotes Tuch.
Eine Dummheit, es sei denn du hast gute Gründe dafür.
Genannt hast du bis jetzt keine.

Die 5 Normal Formen

tsunamitsunami 03.12.2013 14:17:49

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
DokuLeseHemmung , ich finde es ja nett, dass Du Dir die Zeit nimmst und meinen Beitrag liesst.
Aber mit Antworten wie Geht nicht Lass es und Dummheit kann ich nicht viel anfangen.
Und ganz nebenbei ist es auch nicht dass was allgemein unter Forum verstanden wird.

Ich dachte eigentlich dass ich eine Antwort bekomme, wie "Nimm die Funktionen xy, die machen genau das, was Du brauchst." Oder kombinier die Abfragen 1,2, und 3.
Ähnlich wie zB "%" statt "/". Der teilt nicht einfach nur, sondern liefert mir den Rest.
Eine Lösung oder einen Anstoß (Steht im ersten Satz des ersten Posts).

Und Gründe? Andere Programmierer dürften dieselbe Problematik gehabt und irgendwie gelöst haben. Zum Beispiel um Fotos zu sortieren-

Zitat:

Du weißt, dass es nicht funktioniert.
Warum willst du es dann?
Eben weil ich es nicht weiß, darum frage ich in einem Forum!

Und ich habe keine zwei Spalten mit Jahr drinne. Es ist ein Denkansatz, dass man ein Startjahr nimmt und für alle Einträge dieses Jahres zB eine 000001 einträgt. Für alle Einträge des komenden Jahres eine 000002 usw. Oder mit A, B, C
Aber das ist noch nicht rund..

Sinn und Unsinn sei mal dahingestellt. Wie kann ich eine fortlaufende Nummer generieren, welche sich sortieren lässt und pro Jahr einen abgeschlossenen Nummernblock ergibt.
Also
2011 1-345
2012 1-257
2013 1-134

DokuLeseHemmung 03.12.2013 18:33:34

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Zitat:

select nummer from tabelle where YEAR(datum)=2012 or YEAR(datum) = (2013) order by nummer
Sowohl datum als auch nummer beinhalten das Jahr.
Zumindest habe ich es so verstanden.
Und das wäre redundant.


Zitat:

Wie kann ich eine fortlaufende Nummer generieren
LAST_INSERT_ID liefert dir eine eindeutige Zahl.

Zitat:

und pro Jahr einen abgeschlossenen Nummernblock
Wozu?

Und wenn du wirklich fortlaufende, bei 1 beginnende Nummern für das Jahr brauchst, wäre ein zusätzlicher SELECT nötig. Evtl. das ganze in einer Transaktion abgesichert, wenn es mehrere "Schreiber" geben sollte.


Zitat:

DokuLeseHemmung , ich finde es ja nett, dass Du Dir die Zeit nimmst und meinen Beitrag liesst.
Aber mit Antworten wie Geht nicht Lass es und Dummheit kann ich nicht viel anfangen.
Und ganz nebenbei ist es auch nicht dass was allgemein unter Forum verstanden wird.
In einem Forum bekommst du die Antworten, welche der Antwortende zu geben gewillt ist.
Was du damit anfängst, ist deine Sache.
Und ich, werde dich ganz sicher nicht auf einem falschen Weg bestärken.

Bedenke:
Es ist viel schwerer, was falsches aus dem Kopf zu bekommen, als das richtige zu lernen.
Also erst mal "los lassen" und dann den Acker bereiten.
Und dann, viel später kommt die Saat für die neue Ernte..

vt1816 03.12.2013 19:49:28

AW: Nummerierung mit Jahreszahl - sortierungsproblem
 
Zitat:

Zitat von tsunamitsunami (Beitrag 145788)
[..]
Ich dachte eigentlich dass ich eine Antwort bekomme, wie "Nimm die Funktionen xy, die machen genau das, was Du brauchst." Oder kombinier die Abfragen 1,2, und 3.

Mögliche Alternative:

Feld mit Jahreszahl (F1) und ein zweites Feld als Autoincrement (F2) und dann " ... ORDER BY F1, F2". Und fertig. Lässt sich sortieren. Abgeschlossener Nummernbereich pro Jahr usw.


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:10:24 Uhr.

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