webForumDet fria alternativet

Hur ska koden se ut???

ASP

21 svar · 282 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Hur hämtar man max ID ur en tabell och lägger sedan till det i en annan tabell, hur ska koden se ut.

Den första tabellen heter gastbok och där id ska läggas till heter installningar.

------------------
Ampy.cjb.net

Medlem sedan dec. 200012 464 inlägg
#2
sql = "insert into installningar (kolumn) select max(id) from gastbok"
connect.execute sql,,128

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20012 412 inlägg
#3

Hej, om id är en räknare och du menar högsta värdet borde detta funka:

sql ="SELECT max(id) FROM t ORDER BY id DESC"
set rs = conn.execute(sql)

dim lngId
lngId = rs(0)

Sedan gör du bara en insert av variabel lngId i den tabellen du vill ha det i.

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

Medlem sedan feb. 20011 498 inlägg
#4

Jorgen, hur ska den koden se ut?
Hoppas att du kan hjälpa mig.

------------------
Ampy.cjb.net

Medlem sedan dec. 200012 464 inlägg
#5

Varför kan du inte använda den kod jag skrev? Det är mindre kod, färre databasanrop och därmed mer än dubbelt så snabbt som jorgens alternativ.

Om du envisas så

sql = "insert into installningar(kolumn) values (" & lngId & ")"
connect.execute sql,,128

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20011 498 inlägg
#6

Jag tog din kod Lars G (högst upp), men när jag skriver det får jag detta felmeddelande:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Du försöker tilldela Null-värdet till en variabel som inte är av datatypen Variant.

------------------
Ampy.cjb.net

Medlem sedan dec. 200012 464 inlägg
#7

Då kommer du nog att få samma fel med det andra alternativet.

Det låter som om att du har kolumner i tabellen installningar som inte tillåter null. Dvs, du måste ge dessa ett värde när du gör insert.

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20011 498 inlägg
#8

Jag fixade det och det blir inget felmeddelande. Men när jag sedan öppnar databasen och kollar i tabellen installningar så har det fylls i en post men i kolumnen id är det tomt. Varför??

------------------
Ampy.cjb.net

Medlem sedan dec. 200012 464 inlägg
#9

Finns det någon post i tabellen gastbok?

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20011 498 inlägg
#10

Ja, där det fylls allt i som det ska.

------------------
Ampy.cjb.net

Medlem sedan feb. 20011 498 inlägg
#11

Jag kom på en sak, jag hade angivit fel tabell, det ska vara users istället för gastbook, gastbook hade inga poster så det var därför. Allt funkar som det ska nu. Tack så mycket LarsG

------------------
Ampy.cjb.net

Medlem sedan feb. 20012 412 inlägg
#12

Hej!

Använd LarsG:s kod, som sagt så är den snabbare och bättre. Jag är så van att inte kunna använda subquerys i mysql. Hade jag kört access hade jag kört LarsG:s alternativ. Hoppas det fungerar nu :)

mvh Jörgen

------------------
Varför bråka när man kan kramas?

Medlem sedan dec. 200012 464 inlägg
#13

Den koden fungerar också i mysql.

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20012 412 inlägg
#14

Ahh, tack LarsG, då kan jag optimera en hel del :)

Räknas inte det till subquerys, för denna påhittade tex fungerar ju inte:

SQL = "SELECT * FROM table WHERE Id = 1 (SELECT namn FROM table WHERE namn = 'jorgen')"

Är det bara mellan 2 SELECT det inte fungerar, eller hur är det?

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

Medlem sedan dec. 200012 464 inlägg
#15

Tydligen inte enligt Mysql's definition.

Det Mysql inte har stöd för är att man använder en select i ett where villkor, oavsett om det är select/update/delete

Om jag modifierar din fråga lite så är det ett exempel på en fråga som inte stöds av mysql.

SQL = "SELECT * FROM table WHERE namn = (SELECT namn FROM table WHERE namn = 'jorgen')"

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 20002 836 inlägg
#16

fel av mig ... alldeles för trött ... go'natt ....

PatrikB

[Redigerat av PatrikB den 02 dec 2001]

Medlem sedan feb. 20012 412 inlägg
#17

Tack, LarsG, där ser man :r

------------------
Varför bråka när man kan kramas?

Medlem sedan feb. 20012 412 inlägg
#18

Kan man göra lika dant med en update?

Jag provade, typ så här:

sql = "update Inlagg set AntalSvar  =  "& intAntalSvar &" select count " & _
" (Thread_MessId) as intAntalSvar from Inlagg where Thread_MessId = " & _
" " & Request.Querystring("OrgId")

objDB.execute sql,,128

men lyckades inget vidare, provade separera frågorna med ; också.

Går det göra detta i en fråga i mysql och i så fall hur ser den ut?

mvh Jörgen

------------------
Varför bråka när man kan kramas?

[Redigerat av jorgen den 05 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#19
sql = "update Inlagg set AntalSvar = ( select count (Thread_MessId) from Inlagg where Thread_MessId = " & _
 Request.Querystring("OrgId") & ")"

borde det se ut som, men den frågan fungerar inte i Mysql. Jag vet inte heller något sätt att skriva om det så att det går att utföra med en fråga.

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20012 412 inlägg
#20

Okey, blir två frågor som jag misstänkte :)

mvh Jörgen :)

------------------
Varför bråka när man kan kramas?

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)