AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Order by - aufsteigende Zahlenreihe ...
Thema durchsuchen
Ansicht
Themen-Optionen

Order by - aufsteigende Zahlenreihe ...

Ein Thema von erich.wanker · begonnen am 29. Jul 2014 · letzter Beitrag vom 11. Aug 2014
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#21

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 29. Jul 2014, 17:30
Wenn das alles nicht hilft, dann füg' doch eine Sortierspalte ein. Da stehen die Daten dann so drin wie deine DB sortieren kann z.B. HP 100 -> HP0100, HP 1000 -> HP1000 usw.

Das blöde daran ist, dass keiner weiß wie die morgen ihre Daten eingeben und dann wieder sortiert haben wollen. DENEN leuchtet es natürlich immer ein wie es sein soll, aber meinem Programm halt nicht
Da bist Du nicht alleine

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 30. Jul 2014, 08:29
Achtung, Echo:

Also wenn ich das richtig sehe, dann hast du da einen Präfix, eine Zahl und einen Suffix. Immer so aufgebaut, oder kann das auch anders sein?
Ja, ich denke das mit Präfix, Zahl, Suffix könnte man weiter verfolgen, doch wie findet man den Präfix raus, wenn man weder die Länge noch die Beschaffenheit (ggf. ja auch Zahlen) kennt.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 30. Jul 2014, 08:39
Hallo,

dann musst du halt lokal sortieren per Code (.Sort -> MyOwnCompare).


Heiko
Heiko
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#24

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 30. Jul 2014, 10:31
Achtung, Echo:

Also wenn ich das richtig sehe, dann hast du da einen Präfix, eine Zahl und einen Suffix. Immer so aufgebaut, oder kann das auch anders sein?
Ja, ich denke das mit Präfix, Zahl, Suffix könnte man weiter verfolgen, doch wie findet man den Präfix raus, wenn man weder die Länge noch die Beschaffenheit (ggf. ja auch Zahlen) kennt.
Also irgendwo ist hier schon der Hinweis mit der expliziten Sortierspalte aufgetaucht. Wieso sollen die Anwender das nicht selber eintragen, wenn die Sortier Systematik letztlich verborgen bleibt? Eine 89 % Lösung ist doch nur Angriffsfläche für den Ärger, wenn mal wieder ein Eintrag aus der Reihe tanzt. "..kann nicht mal eine Liste sortieren..." -Sprüche würde ich mir jedenfalls nicht anhören wollen.

Ein systematischer Ansatz wäre m.E. alle Zahlen im String (erlaubte Trennzeichen wären zu definieren ..) per LPAD auf eine definierte, genügend große Länge bringen, z.B. 15 Zeichen oder auch 20, eigentlich egal. Wieder an der Ursprungsstelle in den String setzen und auf dem Ergebnis sortieren.
In FB würde man wohl ein Funktion schreiben müssen, ist vielleicht problematisch ohne RegEx, im Client sollte es kein Problem sein. Aber ist FB eigentlich bei Dir im Einsatz oder beim TE?

Den natural sort Hinweis von Himitsu finde ich auch interessant.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 30. Jul 2014, 13:03
Aber ist FB eigentlich bei Dir im Einsatz oder beim TE?
Bei mir ist mySQL im Einsatz.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#26

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 30. Jul 2014, 13:28
Aber ist FB eigentlich bei Dir im Einsatz oder beim TE?
Bei mir ist mySQL im Einsatz.
Dann kannst Du vielleicht die UDF mit REGEXP_REPLACE benutzen, um on-the-fly in der SQL Order By Clause einen Sortierausdruck zu erzeugen:
https://github.com/hholzgra/mysql-udf-regexp
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#27

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 31. Jul 2014, 22:08
In Firebird kannst du der Spalte eine Collation mit dem Attribut 'NUMERIC-SORT=1' zuordnen, dann wird so sortiert wie dein Kunde das möchte.
http://www.firebirdsql.org/refdocs/l...collation.html
Ich hab's selber aber nicht getestet.
fork me on Github
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#28

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 1. Aug 2014, 07:44
Aber ist FB eigentlich bei Dir im Einsatz oder beim TE?
Bei mir ist mySQL im Einsatz.
Hier ist eine natural sort UDF Implementierung für mySQL
http://stackoverflow.com/a/12257917/384864

Aber Du bist ja schon in Urlaub!
Gruß, Jo
  Mit Zitat antworten Zitat
nakaramia

Registriert seit: 1. Mär 2013
25 Beiträge
 
Delphi 2007 Enterprise
 
#29

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 11. Aug 2014, 16:02
Wäre es schneller/ einfacher, den (jeden) Zahlenbereich mit führenden 0 zu erweitern (meinetwegen auf 8 Stellen) und die DB dann mit einer einfachen Sortierung zu betrauen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.078 Beiträge
 
Delphi 12 Athens
 
#30

AW: Order by - aufsteigende Zahlenreihe ...

  Alt 11. Aug 2014, 16:16
Wenn das nur einmal pro Datensatz gemacht wird, z.B. als zusätzliche Spalte im SELECT, dann ist es zumindestens nicht sehr viel langsamer.
Aber wenn dann mal einer auf die Idee kommt und eine Zahl mit mehr als 8 Dezimalstellen verwendet, dann geht das natürlich nicht mehr.

Der Bearbeitung und Erstellen des Vergleichstrings ist aber vermutlich/bestimmt etwas langsamer, als eine gut implementierter Vergleichsfunktion.
Als Vergleich: if s = '123then ist schneller als ein if s = IntToStr(123) then ,
bzw. if i = 123 then ist schneller als ein if IntToStr(i) = '123then .

Kommt dann darauf an, wie gut der Sortieralgo ist, also wieviele Vergleiche der benötigt
und wie groß der Unterschied zwischen der ErweitereMitNullen-Funktion ist, gegenüber der zusätzlichen Zeit für eine aufwändigere Vergleichsfunktion.

Wenn die Strings für jeden einzelnen Vergleich so umgewandelt werden (mit Nullen füllen), dann würde das jedenfalls schnell extrem langsam.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (11. Aug 2014 um 16:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz