SQL-Abfrage (erste freie Nr.)

Hallo,

ich bin seit Jahren mal wieder über SQL gestolpert und brauche mal bitte einen Tip.

Frage:
Innerhalb eines Zahlenbereiches (z.B. 300 bis 400) soll ich die erste freie Nummer finden! Zur Zeit lasse ich den Bereich am Bildschirm anzeigen und suche dann mit den Augen - kann’s doch aber bestimmt noch nicht gewesen sein?!

Vielen Dank!
Thomas

Frage:
Innerhalb eines Zahlenbereiches (z.B. 300
bis 400) soll ich die erste freie Nummer
finden!

Moin moin,
ein paar kleine Beispiele:

SELECT zahl
FROM tab-name
WHERE zahl BETWEEN 300 AND 400
AND zahl IS NULL

oder
SELECT zahl
FROM tab-name
WHERE zahl >= 300
AND zahl

Noch eine kleine Bemerkung, die Beispiele sind natürlich sehr einfach gehalten. Mit diesen Abfragen bekommt man alle freien Zahlen.
Paul

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Noch eine kleine Bemerkung, die Beispiele
sind natürlich sehr einfach gehalten. Mit
diesen Abfragen bekommt man alle freien
Zahlen.

Da bekommst du doch alle Datensätze wo Zahl NULL oder 0 ist. Er sucht glaube ich die erste Zahl die noch an keinen Datensatz vergeben ist.

Wüßte aber leider nicht wie man das mit reinem SQL machen könnte. Eventuell hat das DBMS eine entsprechende Funktion die man verwenden kann (für SQL Server habe ich mal eine Stored Procedure gesehen, lag aber dran, dass uns nichts besseres eingefallen ist, heißt nicht, dass es nichts besseres gibt :o).

Grüße, Robert

oder
SELECT zahl
FROM tab-name
WHERE zahl >= 300
AND zahl

Frage:
Innerhalb eines Zahlenbereiches (z.B. 300
bis 400) soll ich die erste freie Nummer
finden! Zur Zeit lasse ich den Bereich am
Bildschirm anzeigen und suche dann mit
den Augen - kann’s doch aber bestimmt
noch nicht gewesen sein?!

Äh, dumme Rückfrage meinerseits:

Wie selektierst Du denn so einen Teilbereich (z.B. 300 bis 400), wenn da „leere Nummern“ drin sind? Die Frage nach „Null“-Feldern (siehe andere Antworten) kann sich dann doch gar nicht stellen, eher „Welche ist die erste Nummer, die fehlt?“. Oder lieg ich da falsch?

select min(zahl) + 1
from MeineTabelle t
where not exists (
select 'X' from MeineTabelle t1
where t1.zahl = t.zahl + 1)

Also:
Suche die kleinste Zahl, für die es keine nachfolgende gibt. Diese Zahl plus eins ist die erste „freie“.

Gruß

J.

ja, das kommt davon, wenn man glaubt man kann schon alles.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]