Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#18

Re: [Erledigt] SELECT DISTINCT und JOIN - Redundanzen verrin

  Alt 21. Okt 2007, 14:55
Danke an Jelly und mkinzler,

aufbauend auf Euren Hinweisen habe ich es geschafft und dabei sogar den Status eingebaut. Die entscheidenden Ideen waren, MIN() zu verwenden mit passender Sortierung. Zusätzlich werden GROUP BY und ORDER BY sowie weiterhin DISTINCT benötigt. So sieht jetzt mein Code aus:
SQL-Code:
INSERT INTO STR_Namen
            ( ID, Aendg_per,
              Name_Sort, Name_lang, Name_kurz )
       SELECT DISTINCT str_id,
              max(Geltung),
              min(Name_sort),
              SUBSTR(min(Status || Name46), 2,50),
              SUBSTR(min(Status || Name22), 2,50)
         FROM Quelle_Post_St
         GROUP BY Str_id, Name_sort
         ORDER BY Str_id, Name_sort
Alle Informationen werden so übernommen wie gewünscht; der bevorzugte Status 'G' musste vorher durch '0' (Null) ersetzt werden. Meine Idee dabei ist, dass der Status vor die (variablen) Namen gesetzt wird, dann der Minimalwert übernommen und vor dem Speichern wieder entfernt wird.

Das Ganze läuft auch in akzeptabler Geschwindigkeit von weniger als zwei Minuten (nicht gemessen, nur gefühlt - bei 512 MB RAM).

Danke für Eure Hilfe! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat