AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank Duplicates

Ein Thema von -187- · begonnen am 22. Jun 2010 · letzter Beitrag vom 25. Jun 2010
Antwort Antwort
Seite 6 von 6   « Erste     456   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#51

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 09:22
Und die Anlage einer Collation ist hier wirklich mit Kanonen auf Fruchtfliegen schiessen
Markus Kinzler
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#52

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 10:57
Also ich habe ja das Problem das ich Duplicates überhaupt erst hinzufüge bereits behoben. Es geht nur noch darum die vorhandenen zu entfernen.

Zitat:
Das Problem ist, dass Du dann alle Duplicates löschen würdest (dort, es Duplicates gibt, alle vorkommen, sodass keiner übrigbleibt), was Du wahrscheinlich auch nicht willst.
Das wäre in diesem Fall ok, ich würde danach einfach nochmal alle Daten hinzufügen. Wie würde der Command dafür aussehen ?

MFG


Edit: Ich habs nochmal getestet ! Trotz ixCaseInsensitive macht das DBMS Unteschiede zwischen Name, name, NAme und NAME ! Wie es scheint habe ich das falsch verstanden... Wofür ist ixCaseInsensitive dann gut ?

Geändert von -187- (25. Jun 2010 um 11:09 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#53

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 11:05
alle Duplikate löschen müsste in etwa so gehen (ohne Garantie ):

delete from tabelle t1 where (select count(*) from tabelle where upper(name)= upper(t1.name))>1

Geändert von mkinzler (25. Jun 2010 um 11:06 Uhr) Grund: SQL-Tag gefixt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#54

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 11:05
Es wurde dir doch schon der einfache Weg über die neue Tabelle gezeigt. was sprcht den dagegen dass du dich so vehement dagegen wehrst?
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#55

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 11:25
Ich verstehe nicht, was an der Verwendung der für den Zweck geeigneten Collation "kanonenhaft" sein soll. Mit einer case-insensitiven Collation wird dem DBMS gesagt, dass in dieser Spalte die Gross/Kleinschreibung generell nicht berücksichtigt werden soll. Alles andere sind Workarounds, die nur mühsam sind und in der Folge immer wieder zu Fehlern führen werden, weil man leicht bei irgend einer Abfrage darauf vergessen kann. Je nachdem, welcher Zeichensatz verwendet wird, gibt es möglicherweise schon eine geeignete Collation, dann braucht man bei der Felddefinition nur "collate ..." hinzufügen. Wenn nicht, kann mit einem einzigen kurzen SQL Statement auf der Basis einer schon vorhandenen Collation eine case-insensitive erstellt werden und die dann verwendet werden.

Alles andere ist nicht weniger, sondern im Endeffekt mehr Aufwand.

Code:
Trotz ixCaseInsensitive macht das DBMS Unteschiede zwischen Name, name, NAme und NAME !
Womit der vorige Satz bestätigt wäre. Man kann sich natürlich jetzt damit spielen, zu suchen, wie das "ixcaseinsensitive" der KOmponente in der Datenbank umgesetz wird und warum es nicht so funktioniert, wie man sich vorstellt (Du kannst Dir ja mit irgend einem Tool anschauen, wie der Index aussieht, der auf die Art erzeugt worden ist.) - oder man macht es gleich so, dass es ohne weitere Geschichten funktioniert.
  Mit Zitat antworten Zitat
Alt 25. Jun 2010, 11:27     Erstellt von idefix2
Dieser Beitrag wurde von mkinzler gelöscht.
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#56

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 11:31
Zitat:
Ich verstehe nicht, was an der Verwendung der für den Zweck geeigneten Collation "kanonenhaft" sein soll.
Man kann bei einem Auto auch einen Bremsfallschrirm benutzer, auch wenn dies eine Bremse hat.
Neuere FB Versionen bieten die Möglichkeit expression indices anzulegen, bei älteren kann man eine "Schattenfeld" verwenden. Es gibt also keine Notwendigkeit eine eigene Sortierung zu implementieren.
Zitat:
Alles andere sind Workarounds, die nur mühsam sind und in der Folge immer wieder zu Fehlern führen werden,
Du findest also eine Funktion des DBMS ( expression index) als fehlerhaften Workaround und die Implementierung einer eigene collation als leichter? Was passiert wenn du vergisst diese mit auszuliefern oder bei deren Änderung diese mit auzuliefern? Bei einem Index ist der automatisch Teil der DB ( auch bei Schattenfelder, welche per Trigger ge"Upper"rt gefüllt werden, funktioniert es auf jeden Fall.
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#57

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 11:40
Wenn Du eine eigene Collation "erstellen" müsstest, hättest Du Recht. Aber es geht ja ganz einfach, z.B.:

SQL-Code:
create collation collate_filename
    for ISO8859_1 <- verwendeter Zeichensatz
    from de_de <- Basiscollation, aus der eine mit den gewünschten Eigenschaften gemacht wird
    case insensitive
    accent sensitive;
Da brauchst Du nichts "erstellen" und schon gar nichts mit ausliefern, das ist ein ganz normales DDL Statement wie auch create table.
Der Vorteil ist, dass dann diese Collation auf den Feldwert standardmässig überall wirkt, wo das Feld angesprochen wird, und Du in weitere Folge nicht mehr daran denken musst. Ich verwende diese Collation zum Speichern von Dateinamen (im Windows system).

Geändert von idefix2 (25. Jun 2010 um 11:46 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#58

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 11:42
Bei einem expression index auch.
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#59

AW: Datenbank Duplicates

  Alt 25. Jun 2010, 11:48
Der Expression Index isrt NICHT das Feld. Wenn Du später irgendwo das Feld verwendest, darfst Du NIE auf das UPPER vergessen, und das sind mögliche Fehler von der Art, die extrem mühsam zu finden sind, weil sie sich u.U. irgendwo auswirken, wo man nicht damit rechnet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 6   « Erste     456   


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 20:30 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