AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL und nächsten freien (integer)Wert ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

SQL und nächsten freien (integer)Wert ermitteln

Ein Thema von Grolle · begonnen am 4. Nov 2008 · letzter Beitrag vom 4. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#1

SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 14:34
Datenbank: ADS • Version: 9 • Zugriff über: ADS
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 ....

  Mit Zitat antworten Zitat
BOH

Registriert seit: 6. Feb 2007
50 Beiträge
 
Delphi 5 Professional
 
#2

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 14:59
Ungetestet:

SQL-Code:
select min( (feld + 1) ) from tabelle
where (feld + 1) NOT IN (SELECT feld FROM tabelle)
Gruß
BOH
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#3

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:04
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
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#4

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:10
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 ...

  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:20
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 ? Dafür wäre das Vorgehen geeignet, aber niemals für IDs.
Gruß
Hansa
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#6

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:22
Hi,

ja ist so eine Art Artikelnummer. Mit den autoinc-id's kommt
der Nutzer nicht in Berührung!

Viele Grüße ....

  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:24
Durch inversen Join auf eine Nummerntabelle
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:29
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#9

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:35
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 ...

  Mit Zitat antworten Zitat
Leonard

Registriert seit: 12. Okt 2005
Ort: Lutherstadt Eisleben
64 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: SQL und nächsten freien (integer)Wert ermitteln

  Alt 4. Nov 2008, 15:36
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"
Tobias
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:42 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