![]() |
Datenbank: ADS • Version: 9 • Zugriff über: ADS
SQL und nächsten freien (integer)Wert ermitteln
Hallo,
gibt es in SQL eine Funktion, die mir den niedrigsten nächsten freien Wert in einer Spalte ermittelt? Also z. B.: 1,2,5,7,9 .Da müsste dann die 3 rein. Ich weiß, das es autoinc gibt, kommt aber hier für mich nicht in Frage! Viele Grüße .... |
Re: SQL und nächsten freien (integer)Wert ermitteln
Ungetestet:
SQL-Code:
select min( (feld + 1) ) from tabelle
where (feld + 1) NOT IN (SELECT feld FROM tabelle) |
Re: SQL und nächsten freien (integer)Wert ermitteln
Hi Grolle!
BOH schrieb ja schon, dass du dafür eine eigene Abfrage brauchst. Wichtiger ist aber die Frage, wozu du diesen Wert brauchst. Deine Frage weist auf ein falsches Datenbankdesign hin. Primärschlüsselspalten dienen nur zur eindeutigen Identifikation von Datensätzen und sollten keine weiteren Informationen enthalten. Deshalb ist es normalerweise auch egal, ob ggf. "Lücken" in dieser Spalte entstehen. Vielleicht kannst du ja dein eigentliches Problem beschreiben. LG, Xong |
Re: SQL und nächsten freien (integer)Wert ermitteln
Hallo,
es ist ein Userwunsch. Meine Tabellen haben alle eine eindeutige autoinc-id. Der User möchte quasi "Wunschzahlen" vergeben und ich liefere Vorschläge, welche noch frei sind! Viele Grüße ... |
Re: SQL und nächsten freien (integer)Wert ermitteln
Die IDs gehen keinen User was an. Der sollte nicht mal was davon wissen. Du wirst die doch wohl nicht etwa als Art.Nr. etc. missbrauchen ? :shock: Dafür wäre das Vorgehen geeignet, aber niemals für IDs.
|
Re: SQL und nächsten freien (integer)Wert ermitteln
Hi,
ja ist so eine Art Artikelnummer. Mit den autoinc-id's kommt der Nutzer nicht in Berührung! Viele Grüße .... |
Re: SQL und nächsten freien (integer)Wert ermitteln
Durch inversen Join auf eine Nummerntabelle
|
Re: SQL und nächsten freien (integer)Wert ermitteln
Ja was jetzt ? Es geht um irgendeine Nr. ? Also ein normales Record-Feld ? Was nützen denn dann die freien Nummern ? Die User neigen dazu, irgendwas zu gruppieren und als Hinweis unter welcher Nr. sie irgendwas neues am besten abspeichern, müsste man dann eher anzeigen was schon da ist. Die sehen dann ja selber, was noch frei ist.
|
Re: SQL und nächsten freien (integer)Wert ermitteln
Hi,
wie gesagt, es ist ein etwas spezieller Wunsch eine Nummer frei vergeben zu können. Ist diese schon belegt, soll einfach die niedrigste freie Nummer als Vorschlag ermittelt werden. Viele Grüße ... |
Re: SQL und nächsten freien (integer)Wert ermitteln
Hallo,
unabhängig davon, ob es nun gut oder schlecht ist was du machen möchtest, könnte diese Anweisung dir die nächste Nummer geben:
SQL-Code:
tblNummer ist für das Beispiel eine Tabelle mit einem Feld Nummer vom Typ Integer.
select top 1
a.Nummer + 1 from tblNummer a left outer join tblNummer b on b.Nummer = a.Nummer + 1 where b.Nummer is null order by a.Nummer mfg Tobias Edit: Die where Klausel war etwas "unschön" :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz