Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL und nächsten freien (integer)Wert ermitteln (https://www.delphipraxis.net/123559-sql-und-naechsten-freien-integer-wert-ermitteln.html)

Grolle 4. Nov 2008 13:34

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 ....

BOH 4. Nov 2008 13:59

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)

Xong 4. Nov 2008 14:04

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

Grolle 4. Nov 2008 14:10

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 ...

Hansa 4. Nov 2008 14:20

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.

Grolle 4. Nov 2008 14:22

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 ....

mkinzler 4. Nov 2008 14:24

Re: SQL und nächsten freien (integer)Wert ermitteln
 
Durch inversen Join auf eine Nummerntabelle

Hansa 4. Nov 2008 14:29

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.

Grolle 4. Nov 2008 14:35

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 ...

Leonard 4. Nov 2008 14:36

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:
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
tblNummer ist für das Beispiel eine Tabelle mit einem Feld Nummer vom Typ Integer.

mfg Tobias

Edit: Die where Klausel war etwas "unschön" :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Seite 1 von 2  1 2      

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