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?
Annonceindlæg fra Netic
05. oktober 2005 - 19:33
#1
du skal bruge MAX(dinTabel) den henter den højeste værdi
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
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.
05. oktober 2005 - 19:38
#4
Du får vist kun ProdID ud.. mener jeg i hvertfald!!!
05. oktober 2005 - 19:44
#5
Er det kun dig som uploader? Hvis der er flere brugere, er den metode ikke sikker imod sammenfald.
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
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
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.
05. oktober 2005 - 19:54
#9
Access: SELECT @@IDENTITY SQLServer: SELECT SCOPE_IDENTITY() MySQL: SELECT LAST_INSERT_ID()
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?
05. oktober 2005 - 20:06
#11
adoCount.Open "SELECT LAST_INSERT_ID()", adoConn
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
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
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
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å?
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 &"')"
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?
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?
08. oktober 2005 - 13:15
#19
en af jer bare smid et svar hvis i vil ha nogen point
08. oktober 2005 - 14:16
#20
vi kan vel dele
04. november 2005 - 19:39
#21
så mangler du bare at acceptere
Kurser inden for grundlæggende programmering