Zum Inhalt springen

3-stellige Versionsnummern in Datenbank sortieren


Empfohlene Beiträge

Geschrieben

Hallo,

Ich hab folgendes Problem:

Ich will 3-stellige Versionsnummern in einer Datenbank speichern, also z.B.

4.05.3

4.05.19

4.10.3

9.10.19

9.10.34

9.12.145

Die erste Stelle kann 2 Zeichen lang sein, die zweite Stelle 2 Zeichen, die dritte Stelle 3 Zeichen. Also

xx.yy.zzz

Ich hab das ganze Momentan als String gespeichert. Wenn ich jetzt das sortieren anfange passiert folgendes:

4.10.7

4.10.7

4.10.6

4.10.25

4.10.22

Die .22 und .25 müsste ja eigentlich ganz oben stehen, da es aber ein String ist, zählt zuerst die 2.

Hat jemand eine Idee, AUSSER jede Stelle in einem einzelnen Feld zu speichern?

Geschrieben

du könntest das feld beim select mit Substring trennen und die ergebnisse nach INT Casten. Dann einfach nach den 3 Spalten sortieren und fertig.

Am besten legst du dir dafür eine View ö.ä. an.

Geschrieben
Hat jemand eine Idee, AUSSER jede Stelle in einem einzelnen Feld zu speichern?

Entschuldige bitte wenn ich mal nachfrage, aber was spricht denn dagegen?

Ich halte die einzelne Speicherung fuer die beste Loesung.

Goos

Geschrieben
Entschuldige bitte wenn ich mal nachfrage, aber was spricht denn dagegen?

Ich halte die einzelne Speicherung fuer die beste Loesung.

Goos

Das ich die eierlegende Wollmilchsau Lösung haben wollte :)

Die einzelne Speicherung würde ich verwenden, wenn keiner einen BESSEREN Vorschlag hätte.

Geschrieben
Entschuldige bitte wenn ich mal nachfrage, aber was spricht denn dagegen?

Ich halte die einzelne Speicherung fuer die beste Loesung.

Goos

Da muss ich zustimmen. Zerbrich dir nicht den Kopf und mach 3 Spalten draus.

Ist wirklich besser. Und das nicht wegen Faulheit, sondern wegen späterer Abfragegeschwindigkeit.

Geschrieben
Da muss ich zustimmen. Zerbrich dir nicht den Kopf und mach 3 Spalten draus.

Ist wirklich besser. Und das nicht wegen Faulheit, sondern wegen späterer Abfragegeschwindigkeit.

Ok, dann mach ich es so und schreib ein Script, was mir das Zeug konvertiert. Thx

Geschrieben

Ich hab jetzt 3 Felder aus dem Einen gemacht. Problem:

Vorher hab ich gesucht:

"WHERE Version>='$version"

Wenn ich jetzt versuche damit zu suchen:

"WHERE Version1>='$version1 AND Version2>='$version2 AND Version3>='$version3"

funktioniert das ja nicht. Denn wenn ich nach einer Version 4.10 suche, findet er die Version 5.05 nicht, weil 05 kleiner als 10 ist. Wie muss denn die Suchabfrage in dem Fall lauten? Bin momentan etwas verwirrt :confused:

Geschrieben

Hi,

nehmen wir mal die Tabelle mit drei Feldern V1, V2 V3.

&versionX ist in diesem Fall eine Variable


SELECT V1, V2, V3 FROM TABELLE GROUP BY V1, V2, V3

 WHERE V1>= &version1

 AND

 V2 NOT IN 

  (SELECT V2 FROM TABELLE WHERE V1= &version1 AND V2<&version2)

 AND

 V3 NOT IN

 (SELECT V3 FROM TABELLE 

  WHERE V1= &version1 

  AND V2 = &version2 

  AND V3< &version3 )

;


Hoffe, ich habe dein Problem damit getroffen... ?? Und ich hoffe, das der Code stimmt *ggg* Hab nichts ausprobiert... Aber ohne Subselect ist's glaub ich schwer...

Geschrieben
Ich hab jetzt 3 Felder aus dem Einen gemacht. Problem:

Vorher hab ich gesucht:

"WHERE Version>='$version"

Wenn ich jetzt versuche damit zu suchen:

"WHERE Version1>='$version1 AND Version2>='$version2 AND Version3>='$version3"

funktioniert das ja nicht. Denn wenn ich nach einer Version 4.10 suche, findet er die Version 5.05 nicht, weil 05 kleiner als 10 ist. Wie muss denn die Suchabfrage in dem Fall lauten? Bin momentan etwas verwirrt :confused:

leg einen view über die tabelle, der die versionen für abfragen wieder in einem feld zusammenführt.

alternative wäre eine normierung der versionen, z.b. durch auffüllen mit 0:

4.10.7 -> 04.10.007

dann funktioniert auch die lösung mit string.

-j

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...