Avatar billede bogologo Nybegynder
05. oktober 2005 - 19:31 Der er 20 kommentarer og
1 løsning

Find den højeste værdi i en mySQL database

Jeg har brug for at finde den højeste værdi i en række værdier

hvis jeg bruger:
-----------
Set adoCount = Server.CreateObject ("ADODB.Recordset")
Count.Open "SELECT ProdID FROM prod ORDER BY ProdID DESC", adoConn
-----------
hvordan kan jeg så få den højeste værdi ud.

Yderligere vil jeg gerne kunne lægge 1 til værdien.

skal bruge det til at navngive nogle billedfiler jeg uploader, således at de vil komme til at hedde:

ID1
ID2
osv.

altså vil jeg hive det højeste ID ud af min database og lægge 1 til det, nogen der ved hvordan man kan gøre det, med ASP og en mySQL database?
Avatar billede kalp Novice
05. oktober 2005 - 19:33 #1
du skal bruge MAX(dinTabel)

den henter den højeste værdi
Avatar billede kalp Novice
05. oktober 2005 - 19:35 #2
Count.Open "SELECT MAX(ProdID) as nyID FROM prod", adoConn

måske kan du ligge 1 til direkte også

Count.Open "SELECT MAX(ProdID)+1 as nyID FROM prod", adoConn

men ellers anvend den første SQL ... og lig selv et til når du skal bruge den
Avatar billede bogologo Nybegynder
05. oktober 2005 - 19:36 #3
hmmm, hvis jeg bare skriver MAX(prod) så vil jeg vel også få alle de andre værdier med ud, ting som Title osv, dem skal jeg ikke bruge, kun ProdID.
Avatar billede kalp Novice
05. oktober 2005 - 19:38 #4
Du får vist kun ProdID ud..  mener jeg i hvertfald!!!
Avatar billede ksoren Nybegynder
05. oktober 2005 - 19:44 #5
Er det kun dig som uploader? Hvis der er flere brugere, er den metode ikke sikker imod sammenfald.
Avatar billede arne_v Ekspert
05. oktober 2005 - 19:48 #6
helt enig

indsæt en række med en id som er auto increment / auto number / identity

tag den genererede id og brug den til upload

opdater din række hvis nødvendigt
Avatar billede bogologo Nybegynder
05. oktober 2005 - 19:49 #7
det er meningen det er en administrator der skal kunne uploade billeder, så der skulle ikke være nogen problemer på den led.

muligt jeg er lidt dum nu, men hvad skal jeg så skrive for at få nyID ud?

kan ikke lige få den til at gøre som jeg vil
Avatar billede bogologo Nybegynder
05. oktober 2005 - 19:50 #8
arne: jeg har den som auto increment

men den kan jeg ikke lige gennemskue hvordan jeg skal få fat i, derfor jeg bare ville tage den højeste og lægge 1 til.
Avatar billede arne_v Ekspert
05. oktober 2005 - 19:54 #9
Access:

SELECT @@IDENTITY

SQLServer:

SELECT SCOPE_IDENTITY()

MySQL:

SELECT LAST_INSERT_ID()
Avatar billede bogologo Nybegynder
05. oktober 2005 - 20:03 #10
tror jeg roder lidt rundt i det nu.

er ikke helt sikker på hvordan og hvorledes:


Set adoCount = Server.CreateObject ("ADODB.Recordset")
adoCount.Open "SELECT LAST_INSERT_ID(ProdID) as nyID FROM prod", adoConn

Response.Expires = 0
Set fbase = Server.CreateObject("Chili.Upload.1")
fbase.SizeLimit = 100000
fbase.SaveToFile(Server.mapPath("/") & "/images/prod/ID" & nyID ".jpg")

ser det helt forkert ud?
Avatar billede arne_v Ekspert
05. oktober 2005 - 20:06 #11
adoCount.Open "SELECT LAST_INSERT_ID()", adoConn
Avatar billede bogologo Nybegynder
05. oktober 2005 - 20:13 #12
ok så:

set adoCount = Server.CreateObject ("ADODB.Recordset")
adoCount.Open "SELECT LAST_INSERT_ID(ProdID)", adoConn

Response.Expires = 0
Set fbase = Server.CreateObject("Chili.Upload.1")
fbase.SizeLimit = 100000
fbase.SaveToFile(Server.mapPath("/") & "/images/prod/ID" & adoCount & ".jpg")


sådan?

det gir en fejl der siger:

Sun ONE ASP VBScript runtime (0x800A01AE)
Class does not support automation
Avatar billede arne_v Ekspert
05. oktober 2005 - 20:15 #13
adoCount.Open "SELECT LAST_INSERT_ID()", adoConn

ikke noget argument

og INSERT skal være lavet på adoConn inden
Avatar billede ksoren Nybegynder
05. oktober 2005 - 20:19 #14
Prøv også

fbase.SaveToFile(Server.mapPath("/") & "/images/prod/ID" & adoCount(0) & ".jpg")

adoCount(0) er resultatet fra førrste kolonne
Avatar billede bogologo Nybegynder
05. oktober 2005 - 20:21 #15
hmmm så må jeg ha noget forkert i min INSERT, for den kommer med samme fejl

skal værdien ikke bare sættes til blank når den selv laver auto_increment?..

min INSERT ser ud som følger:

strSQL = "INSERT INTO prod ("
strSQL = strSQL & "`ProdID`, "
strSQL = strSQL & "`TypeID`, "
strSQL = strSQL & "`Title`, "
strSQL = strSQL & "`Desc`, "
strSQL = strSQL & "`Price`, "
strSQL = strSQL & "`Img`) "

strSQL = strSQL & "VALUES( "

strSQL = strSQL & " '', "
strSQL = strSQL & " '"&adoTypeID &"', "
strSQL = strSQL & " '"&adoTitle &"', "
strSQL = strSQL & " '"&adoDesc &"', "
strSQL = strSQL & " '"&adoPrice &"', "
strSQL = strSQL & " '"&adoImg &"')"

adoConn.Execute(strSQL)

gik udfra det var nok at sætte ProdID til '' da den selv laver auto_increment på den jo. og den skriver også de rigtige ProdID i min database nu.. men det måske en "hack" måde at gøre det på?
Avatar billede arne_v Ekspert
05. oktober 2005 - 20:23 #16
undlad den helt

strSQL = "INSERT INTO prod ("
strSQL = strSQL & "`TypeID`, "
strSQL = strSQL & "`Title`, "
strSQL = strSQL & "`Desc`, "
strSQL = strSQL & "`Price`, "
strSQL = strSQL & "`Img`) "

strSQL = strSQL & "VALUES( "
strSQL = strSQL & " '"&adoTypeID &"', "
strSQL = strSQL & " '"&adoTitle &"', "
strSQL = strSQL & " '"&adoDesc &"', "
strSQL = strSQL & " '"&adoPrice &"', "
strSQL = strSQL & " '"&adoImg &"')"
Avatar billede bogologo Nybegynder
05. oktober 2005 - 20:33 #17
virkede med:
fbase.SaveToFile(Server.mapPath("/") & "/images/prod/ID" & adoCount(0) & ".jpg")

men jeg troede ikke det var nødvendigt at sætte kolonne "nr" på, troede netop det var det SELECT LAST_INSERT_ID() gjorde, altså valgte 1 værdi ud?
Avatar billede bogologo Nybegynder
05. oktober 2005 - 20:47 #18
typisk, nu fik jeg så lige et nyt problem...

har jeg åbenbart ikke lige været opmærksom på

men den form jeg sender det hele med står til at være post, den har jeg så sat over til get nu for at få overført de forskellige strenge til min insert, og nu kan den så ikke gemme filen, den siger bare:

Chili.Upload.1 (0x80004005)
Form does not contain a file element.

i skulle ikke tilfældigvis vide om man kan gøre noget ved det, eller man er tvunget til at uploade billedet seperat?
Avatar billede bogologo Nybegynder
08. oktober 2005 - 13:15 #19
en af jer bare smid et svar hvis i vil ha nogen point
Avatar billede arne_v Ekspert
08. oktober 2005 - 14:16 #20
vi kan vel dele
Avatar billede arne_v Ekspert
04. november 2005 - 19:39 #21
så mangler du bare at acceptere
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester