Seite 1 von 1

SQL-Abfrage nach freier Nummer

Verfasst: 17.05.2011 21:54
von alter Mann
Ich habe eine Datenbank, in der ich etwas eintrage :lol: und auch wieder lösche. Die Anzahl der Datenbankeinträge soll begrenzt sein (z.B. Regalfächer).
Nun möchte ich mit einer möglichst einfachen Abfrage das erste leere Fach finden.
Bisher mache ich folgende Abfrage

Code: Alles auswählen

DatabaseQuery(iDatabase,"SELECT fachnummer FROM regal ORDER BY fachnummer")
iFind = 0
While NextDatabaseRow(iDatabase)
  If GetDatabaseLong(iDatabase,0) <> iFind
    Break
  EndIf
  iFind + 1
Wend
Geht es auch einfacher ?

Re: SQL-Abfrage nach freier Nummer

Verfasst: 17.05.2011 22:17
von Kiffi

Code: Alles auswählen

UseSQLiteDatabase()

; TestDaten erzeugen:
DB = OpenDatabase(#PB_Any, ":memory:", "", "", #PB_Database_SQLite)

DatabaseUpdate(DB, "Create Table Regal (FachNummer)")

DatabaseUpdate(DB, "Insert Into Regal (Fachnummer) Values (1)")
DatabaseUpdate(DB, "Insert Into Regal (Fachnummer) Values (3)")
DatabaseUpdate(DB, "Insert Into Regal (Fachnummer) Values (5)")
DatabaseUpdate(DB, "Insert Into Regal (Fachnummer) Values (7)")

; Abfrage:
If DatabaseQuery(DB, "Select Fachnummer + 1 As FreieFachnummer From Regal Where Fachnummer + 1 Not In (Select FachNummer From Regal) Order By FreieFachnummer")
  
  While NextDatabaseRow(DB)
    
    Debug "Freie Fachnummer: " + Str(GetDatabaseLong(DB, 0))
    
  Wend
  
  FinishDatabaseQuery(DB)
  
EndIf
Grüße ... Kiffi

Re: SQL-Abfrage nach freier Nummer

Verfasst: 17.05.2011 23:21
von alter Mann
Danke ! :allright:

Re: SQL-Abfrage nach freier Nummer

Verfasst: 18.05.2011 09:35
von dige
Danke ... guter Tipp!