Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Nächsten freien Wert eines Feldes ermitteln ? Wie am bes

  Alt 5. Feb 2006, 14:34
Hmm. normalerweise würde ich einen Zähler in einer getrennten Tabelle reservieren, und den einfach hochzählen. Dann gibt es zwar Lücken, aber das ist doch vollkommen egal.

Aber Du willst das eben nicht...
Delphi-Quellcode:
select min (k.KuNr+1) As NeuKdNr
  from Kunden k
       left join Kunden k1
         on k.KuNr + 1 = k1.KuNr
 Where k1.KuNr is Null
Erzeugt eine Liste aller Kundennummern, für die es keinen Kunden mit der Nummer 'KuNr+1' gibt und liefert das kleinste Element zurück.
Bei 7000 Datensätzen ist das gerade noch vertretbar, zumal das Anlegen neuer Kunden nicht ständig vorkommt.
[edit]
Das hier ist laut Query Analyzer noch etwas schneller

Delphi-Quellcode:
select min (orNumber+1) from [order] o
 where not exists (
    select * from [order] o1 where o1.orNumber = o.ornumber+1
    )
[/edit]
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat