Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 10.12.12 09:43
Hi, Delpher,
wie kann ich eine Query erzeugen, die nach dem Familiennamen unabhängig von der Groß- Kleinschreibung sortiert?
Sodass also von Rittershausen vor Fuhrmann einsortiert wird?
Danke, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mo 10.12.12 09:55
In Firebird könntest Du UPPER() verwenden:
SQL-Anweisung 1:
| select nachname from leute order by UPPER(nachname) |
Oder bei der Tabellendefinition COLLATE ändern. Da muss man aber wissen, was man tut.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 10.12.12 10:15
Entschuldige, aber "von Rittershausen" kann nie vor "Fuhrmann" einsortiert werden, dan "v/V" immer nach "f/F" kommt.
Und bei dem Order by xxx war bei meiner Datenbankanwendung keine Unterscheidung zwischen groß und klein zu sehen.
Ich habe auch mal die Komponenten durchgesehen. Da kann ich auch weder in der Felddefinition noch in der Tabellendefinition (TQuery) sehen, wie man case-sensitive Sortierung ein- oder ausschaltet.
Hast Du mal Order By Nachname probiert und nachgesehen, ob die Kleinbuchstaben dann wirklich nach den Großbuchstaben kommen? Wie gesagt, bei meiner Anwendung wird da keine Konversion wie Upper() durchgeführt und trotzdem klappt das.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 10.12.12 10:36
Ob case-sensitiv oder nicht hängt wie bereits erwähnt von der Kollation ab. Und "von Rittershausen" kommt nur dann vor "Fuhrmann", wenn man absteigend sortiert  . Ich bin gerade nicht sicher, aber UPPER gehört entweder zum aktuellen SQL-Standard oder wird zumindest von den meisten verbreiteten RDBMS unterstützt. Daher würde ich es so versuchen wie Nersgatt, das sollte eigentlich funktionieren. Falls nicht, wäre die Angabe des verwendeten RDBMS hilfreich.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 10.12.12 12:51
Entschuldigung, das ist mein Versehen. Ich meinte natürlich, dass "von Rittershausen" vor "Weinheim" einsortiert wird.
Gruß, Detlef Moderiert von Martok: Beiträge zusammengefasstP.S.
Upper() funzt leider nicht.
_________________ ut vires desint, tamen est laudanda voluntas
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 10.12.12 14:53
Was heißt "funzt nicht"? Wird der Befehl nicht erkannt, oder stimmt nur die Sortierung weiterhin nicht? Welches DBMS?
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 10.12.12 15:21
Funzt nicht, heißt, dass der Befehl zur Laufzeit von der BDE nicht erkannt wird.
_________________ ut vires desint, tamen est laudanda voluntas
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 10.12.12 15:38
BDE? Von welcher Datenbank reden wir denn hier, Paradox? In dem Fall müsste ich mich auch erst belesen, das ist so lange her.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 10.12.12 16:10
Tranx hat folgendes geschrieben : | Und bei dem Order by xxx war bei meiner Datenbankanwendung keine Unterscheidung zwischen groß und klein zu sehen. Ich habe auch mal die Komponenten durchgesehen. Da kann ich auch weder in der Felddefinition noch in der Tabellendefinition (TQuery) sehen, wie man case-sensitive Sortierung ein- oder ausschaltet. Hast Du mal Order By Nachname probiert und nachgesehen, ob die Kleinbuchstaben dann wirklich nach den Großbuchstaben kommen? Wie gesagt, bei meiner Anwendung wird da keine Konversion wie Upper() durchgeführt und trotzdem klappt das. |
Du kannst weder davon ausgehen, daß jeder dasselbe DBMS verwendet wie du noch daß jeder denselben Zeichensatz und dieselbe Sortierung (Collation) einsetzt. Daher wird je nach Zeichensatz eben nicht grundsätzlich nach deutschen Regeln sortiert, und ein Upper an der richtigen Stelle des Select-Strings kann sehr wohl dazu führen, daß nicht zwischen Groß- und Kleinschreibung unterschieden wird. Meine Erfahrungen erstrecken sich von MS-Access über MySQL, Firebird, Interbase bis MsSQL: in allen sind die Sortierungen unterschiedlich bei gleichem Zeichensatz.
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 10.12.12 16:28
Perlsau, ich gebe Dir Recht. Das ist bei jedeem Datenbanksystem anders. Aber warum eigentlich? Schließlich ist das ja sehr hinderlich, wenn man Daten mit verschiedenen Datenbanksystemen bearbeitet. Es wäre doch sinnvoll, gewisse Normungen oder Schalter zu haben, bei denen man dann die volle Kontrolle über seine Daten hat, und nicht herumrätseln muss, wie man diese so hinbekommt, dass sie dem gewünschten Ergebnis entsprechen. Aber da verlange ich wahrscheinlich zuviel des Guten.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 10.12.12 17:43
In HTML gibt es ja auch klare Standards, trotzdem kocht jeder Browser-Hersteller sein eigenes Süppchen, damit müssen wir leider leben. Und da das bei SQL nicht anders ist, habe ich ja nun schon 3 mal gefragt, um welche Datenbank es sich eigentlich handelt.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 10.12.12 18:39
@wasweißdennich:
danke für dein Interesse, es ist die BDE = Borland Database Engine, zwar alt,
aber in diesem Prg verwendet.
Gruß, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 10.12.12 18:44
Die BDE ist keine Datenbank, sondern nur eine Art "Zugriffsframework" für den Zugriff auf verschiedene DBMS. Die DB dahinter kann dBase, Paradox, Oracle, MS SQL-Server oder was weiß ich sein. Und genau darum geht es mir. Ich habe übrigens mittlerweile recherchiert, auch Paradox kennt wohl UPPER.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 10.12.12 18:50
Ach so, das wusste ich nicht. Es ist eine DBase4-DB dahinter.
_________________ ut vires desint, tamen est laudanda voluntas
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 10.12.12 18:59
Ach Du liebes bisschen. dBase habe ich selbst nie benutzt, da mir das schon zu Delphi 2-Zeiten veraltet erschien. Wenn ich mich recht entsinne verstand das nativ noch nicht einmal SQL, da wundert mich die Fehlermeldung nicht. Handelt es sich um eine Kundendatenbank, oder könntest Du in Erwägung ziehen, auf ein zeitgemäßeres DBMS zu migrieren? Es gibt auch kostenfreie, die den kommerziellen nicht oder nur unwesentlich nachstehen.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 10.12.12 20:19
Es handelt sich um Schule.
Migrieren: Ja, hast du einen Vorschlag?
_________________ ut vires desint, tamen est laudanda voluntas
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Mo 10.12.12 21:03
*Puh*, da gibt es einiges an Auswahl wie PostgreSQL, SQLite, Firebird, MariaDB oder SQLExpress (willkürliche Auswahl). Eine direkte Empfehlung möchte in an dieser Stelle nicht aussprechen, alle haben Vor- und Nachteile, schau sie Dir einfach mal an und entscheide selbst.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 11.12.12 08:18
Tranx hat folgendes geschrieben : | Entschuldige, aber "von Rittershausen" kann nie vor "Fuhrmann" einsortiert werden, dan "v/V" immer nach "f/F" kommt. |
Aber nur, wenn deine Select-Anweisung nicht am Ende lautet ... order by Name desc, denn dann wird V tatsächlich vor F einsortiert ...
Zuletzt bearbeitet von Perlsau am Mi 12.12.12 09:09, insgesamt 1-mal bearbeitet
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 11.12.12 08:32
D. Annies hat folgendes geschrieben : | Es handelt sich um Schule. |
Das ist ja mal wieder typisch: veraltetes Lehrerwissen soll Schüler auf die moderne IT-Welt vorbereiten
D. Annies hat folgendes geschrieben : | Migrieren: Ja, hast du einen Vorschlag? |
MySQL ist sehr umfangreich, noch umfangreicher ist MsSQL. Am einfachsten finde ich persönlich Firebird, sehr übersichtliche Datenbank. Bei HKSoft gibt's ein sehr gutes Interbase/Firebird-Tool zum Erstellen und Verwalten von Datenbanken und Tabellen: IbExpert.
Meinen eigenen Einstieg in die Entwicklung von Datenbank-Anwendungen fand ich damals mit Hilfe von MsAccess, das es mir erleichterte, zu erkennen, wie eine Datenbank überhaupt funktioniert, wie SQL-Befehle aussehen usw.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Di 11.12.12 10:38
@Perlsau:
Ich muss dich leider enttäuschen: Hier spielt nicht veraltetes Lehrerwissen die
entscheidende Rolle, sondern das "Wissen" der Schulverwaltung! Aber danke für den Smiley
Ich kann nur mit der beschriebenen Umgebung auf die Daten zugreifen, obwohl ich natürlich
nach Excel / Text / Word konvertieren kann usw.
LG, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|