Seite 1 von 1

SQL-> maximalen Eintrag ermitteln, aber wie ?

Verfasst: 07.10.2004 17:40
von double7
Hi,

also, ich hätte da mal ein Problem :oops:

Ich möchte meine maximale Index nummer ermitteln.
Dabei kommt folgende Syntax zum Einsatz:

Select max(indexnr) from kunde
oder
Select max(indexnr) as counter from Kunde

..soweit so gut, jedoch:

Wie lese ich jetzt die Rückgabe aus ?

Diverse Ideen habe ich schon ausprobiert (daher auch die 2
verschiedenen SQL Syntaxe), jedoch
bin ich zu keiner (korrekten) Lösung gekommen.

/:->
Im "alten" Forum fand ich ein ähnliches Problem mit dem SQL
count Befehl, jedoch gab es in dem Thread keine zufriedenstellende Lösung.

Über eine schnelle Hilfe würde ich mich freuen.

Gruß, d7

PS: Das schonmal erwähnte MDI Frameset ist soweit in der Beta Version
fertig. Jedes Fenster kann man mittels einer vordefinierten Include Datei
einfügen, in der auch die Events abgearbeitet werden können (schön
übersichtlich). Bei Interesse melden, der Source ist zu lang zum Posten !

Re: SQL-> maximalen Eintrag ermitteln, aber wie ?

Verfasst: 07.10.2004 17:56
von Kiffi
> Im "alten" Forum fand ich ein ähnliches Problem mit dem SQL
> count Befehl, jedoch gab es in dem Thread keine zufriedenstellende
> Lösung.

nochmal suchen:

http://www.robsite.de/php/pureboard-arc ... php?t=5211

Grüße ... Kiffi

Verfasst: 08.10.2004 10:26
von double7
Hi Kiffi,

danke für deine schnelle Antwort, jedoch bringt mich auch dieser Thread
nicht zum Ziel.

Genauso wie SirCus benötige ich die select max(spalte) Anweisung, /:->
SELECT * FROM DeineTabelle ORDER BY DeineErsteSpalte DESC LIMIT 1
wir von meiner Datenbank irgendwie nicht akzeptiert. :|

Also, wie bekomme ich das Ergebnis von Select max() und Select count() SQL Anweisungen ? :freak:

Verfasst: 08.10.2004 10:38
von Kiffi
> wir von meiner Datenbank irgendwie nicht akzeptiert. :|

um welche Datenbank geht's denn?

Grüße ... Kiffi

Verfasst: 08.10.2004 10:44
von double7
Es handelt sich um eine alte Access 97 Datenbank, welche bei der angegebenen Syntax einen Fehler rauswirft:

Syntaxfehler in ORDER BY clausel

Gibt es denn gar keine Möglichkeit in PB eine einfache Rückgabe eines
SQL commands zu erhalten ?!? (Schade, schade, schade...)

Verfasst: 08.10.2004 11:13
von double7
OK, hab ne Lösung (ohne errorcheck): :allright:

Code: Alles auswählen

;- maximalwert aus Spalte ermitteln
  Procedure.l maxid(field$,table$)
  Protected sql.s
  Protected maxid.l
  
  sql="Select "+field$+" FROM "+table$+" ORDER BY "+field$+" ASC" 
  DatabaseQuery(sql)
   
  While NextDatabaseRow()
    maxid=GetDatabaseLong(0)
  Wend
   
  If maxid=0
    maxid=1
  Else
    maxid=maxid+1
  EndIf
  
  ProcedureReturn maxid

EndProcedure
Jedoch kann dies bei großen Datenbanken recht lange dauern :(
Da wäre der Select max SQL Befehl schneller... :roll:

Falls jemand noch ne Idee hätte, wäre ich sehr dankbar. <)

Gruß, d7[/code]

Verfasst: 08.10.2004 12:27
von bobobo
Wenn die Datenbank im ODBC als test angemeldet ist und die Tabelle Tabelle1 enthält deren Spalte ID ein fortlaufender eindeutiger Index ist dann liefert Dir

Code: Alles auswählen

InitDatabase()
OpenDatabase(0,"test","","")
query.s="Select top 1 id from Tabelle1 order by id desc";
If DatabaseQuery(query)
  While NextDatabaseRow()
    Maxid.s=GetDatabaseString(0)
    debug Maxid
  Wend
EndIf
CloseDatabase(0)
das was Du brauchst.

Hoffe ich