A ampy Medlem sedan feb. 2001 1 498 inlägg Trådstart 30 nov. 2001 21:06 #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.
L LarsG Medlem sedan dec. 2000 12 464 inlägg sql = "insert into installningar (kolumn) select max(id) from gastbok"
connect.execute sql,,128
J jorgen Medlem sedan feb. 2001 2 412 inlägg 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
A ampy Medlem sedan feb. 2001 1 498 inlägg Jorgen, hur ska den koden se ut?
Hoppas att du kan hjälpa mig.
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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
A ampy Medlem sedan feb. 2001 1 498 inlägg 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.
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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.
A ampy Medlem sedan feb. 2001 1 498 inlägg 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??
L LarsG Medlem sedan dec. 2000 12 464 inlägg Finns det någon post i tabellen gastbok?
A ampy Medlem sedan feb. 2001 1 498 inlägg Ja, där det fylls allt i som det ska.
A ampy Medlem sedan feb. 2001 1 498 inlägg 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
J jorgen Medlem sedan feb. 2001 2 412 inlägg 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
L LarsG Medlem sedan dec. 2000 12 464 inlägg Den koden fungerar också i mysql.
J jorgen Medlem sedan feb. 2001 2 412 inlägg 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
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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')"
P PatrikB Medlem sedan mars 2000 2 836 inlägg fel av mig ... alldeles för trött ... go'natt ....
PatrikB
[Redigerat av PatrikB den 02 dec 2001]
J jorgen Medlem sedan feb. 2001 2 412 inlägg 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
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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.
J jorgen Medlem sedan feb. 2001 2 412 inlägg Okey, blir två frågor som jag misstänkte
mvh Jörgen