SQL-> maximalen Eintrag ermitteln, aber wie ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

SQL-> maximalen Eintrag ermitteln, aber wie ?

Beitrag 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 !
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

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

Beitrag 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
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Beitrag 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:
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> wir von meiner Datenbank irgendwie nicht akzeptiert. :|

um welche Datenbank geht's denn?

Grüße ... Kiffi
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Beitrag 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...)
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Beitrag 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]
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten