Delete och select i samma

Databaser & SQL

8 svar · 166 visningar · startad av bagera

Medlem sedan jan. 2001126 inlägg
Trådstart#1

Kan jag execvera alla dom här "samtidigt" på något sätt?
kan man skriva alltihop i en sträng?

strsql = "SELECT questiontableid FROM questiontable where headtableid ='"& vart1 "&';"

strsql2 = "DELETE from headtable where headtableid ='"& vart1 &"' ;"

strsql3 = "DELETE from questiontable where headtableid ='"& vart1 &"' ;"

strsql4 = "DELETE from responsetable where questiontableid ='"& vart2 &"' ;"

Medlem sedan dec. 19998 577 inlägg
#2

Javisst, separera dom med ";" bara. :)

strsql = "SELECT questiontableid FROM questiontable where headtableid ='"& vart1 "&'; DELETE from headtable where headtableid ='"& vart1 &"'; DELETE from questiontable where headtableid ='"& vart1 &"'; DELETE from responsetable where questiontableid ='"& vart2 &"';"
Medlem sedan jan. 2001126 inlägg
#3

Så enkelt det kan vara ibland:)
Men hur gör jag då när selectens värde ska in i variabeln "vart2"?

strsql = "SELECT questiontableid FROM questiontable where headtableid ='"& vart1 "&'; DELETE from headtable where headtableid ='"& vart1 &"'; DELETE from questiontable where headtableid ='"& vart1 &"'; DELETE from responsetable where questiontableid ='"& vart2 &"';"

Medlem sedan juni 200032 967 inlägg
#4
strsql = "SELECT questiontableid FROM questiontable where headtableid ='"& vart1 "&'; DELETE from headtable where headtableid ='"& vart1 &"'; DELETE from responsetable where questiontableid IN(SELECT questiontableid FROM questiontable where headtableid ='"& vart1 "&'); DELETE from questiontable where headtableid ='"& vart1 &"'; "

Jag bytte plats på dina två sista DELETE-satser, eftersom det hade blivit lite krångligt annars.

Redigering: Behöver du verkligen din första SELECT-fråga där förresten? Ska du använda ID:t till något annat än till DELETE-satsen?

Mvh,

Medlem sedan dec. 200012 464 inlägg
#5

Du kan sätta villkoret direkt i delete-satsen.

strsql = "DELETE from headtable where headtableid ='"& vart1 &"'; DELETE from responsetable where questiontableid in (SELECT questiontableid FROM questiontable where headtableid ='"& vart1 "&');DELETE from questiontable where headtableid ='"& vart1 &"'"

Jag ändrade på ordningen mellan dina delete-satser.

Medlem sedan jan. 2001126 inlägg
#6

Vilka hjältar ni är!

Bara därför svänger jag iväg en snabbfråga.

behöver man stänga databasen om man använder denna?
Set rs = conn.Execute(strsql)

Tack å bock!

Medlem sedan dec. 19998 577 inlägg
#7

Databasen måste du alltid stänga, och skapar du ett recordset så skall det också stängas...

Medlem sedan jan. 2001126 inlägg
#8

Så här ser hela koden ut, tar jag bort stängningen så här funkar den, inte annars.
vad gör jag för fel?

vart1 =request.querystring("id")

strconn = MM_forum_STRING

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open strconn

strsql = "DELETE from responsetable where questiontableid in (SELECT questiontableid FROM questiontable where headtableid ='"& vart1 &"');DELETE from questiontable where headtableid ='"& vart1 &"'; DELETE from headtable where headtableid ='"& vart1 &"'"

Set rs = conn.Execute(strsql)
response.redirect"admin.asp"

Medlem sedan dec. 200012 464 inlägg
#9

I och med att du gör execute på ett statement som inte returnerar några poster så får du ett tomt och stängt recordset tillbaka.

conn.Execute strsql,,128
conn.close
response.redirect"admin.asp"

Du kan utelämna tilldelningen av recordsetet.

258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)