Veröffentlicht 27. Januar 200520 j 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?
27. Januar 200520 j 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.
27. Januar 200520 j 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
27. Januar 200520 j 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.
27. Januar 200520 j 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.
27. Januar 200520 j 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
27. Januar 200520 j 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:
27. Januar 200520 j 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...
27. Januar 200520 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.