Avatar billede grafikeren Nybegynder
09. februar 2004 - 13:34 Der er 16 kommentarer og
1 løsning

Slette en "tilfældig" post i SQL

Hej

Jeg har en sql tabel, som holder styr på med hvilken handling mine brugere har "tjent" deres point. Jeg vil så gerne kunne slette bare en post fra denne tabel, men nu er det sådan, at jeg ikke har mulighed for specificere min sletning. Dette er et problem da en bruger måske har foretaget samme handling 100, og jeg skal bare ha' slettet en tilfældig en af dem... Det er sku' lidt svært at forklare. ;-)

Her er den foreløbige kode:
strSQL8="delete from tblPoints Where Point = '"&point&"' and Bruger = '"&bruger&"' and Handl = '"&handl&"'"

Men hvis jeg nu kører denne kode, så vil den jo slette ALLE de hundredevis af steder hvor denne bruger har fortaget en lignende handling og tjent et lignende antal point. Hvordan får jeg koden til at slette en tilfældig af disse poster...??
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 13:41 #1
Du må gerne fortælle hvilken database du har. Er det mysql kan du sætte en LIMIT på
en delete. Er det Access kan du finde een post med en SELECT TOP 1, finde id
(primær nøgle) og så slette den ud fra denne oplysning. Dvs. 2 SQL-sætninger.

Men måske du kunne lave din tabelstruktur lidt anderledes, hvis dette er noget du
skal gøre tit.
Avatar billede grafikeren Nybegynder
09. februar 2004 - 13:43 #2
Det er mySql

Tabel strukturen er på plads, den skulle helt ikke ændres. Det fungerer fint... Men hvad skal jeg så gøre?
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 13:48 #3
Prøv (og du må gerne teste det først på testdata)

  delete from ........ limit 1

Så burde den slette én der opfylder betingelserne i where-sætningen. Skal det
være den ældste kan du

  delete from ...... order by date asc limit 1

Men: test det lige først
Avatar billede grafikeren Nybegynder
09. februar 2004 - 13:50 #4
limet = 1? er bare limit 1
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 13:51 #5
`date` er et felt du har som har en passende dato/timestamp i sig. Eller et
id-felt fra autonummerering.
Avatar billede grafikeren Nybegynder
09. februar 2004 - 13:56 #6
limit 1 ->
Microsoft VBScript compilation error '800a0401'

Expected end of statement
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 13:58 #7
Men du skal jo lave en sql-sætning. Det er ikke VB det her med LIMIT  ;))
Avatar billede grafikeren Nybegynder
09. februar 2004 - 14:01 #8
... du snakker i gåder! Selvfølgelig har jeg indsat den i en SQL sætning.

strSQL8="delete from tblPoints Where Point = '"&point&"' and Bruger = '"&bruger&"' and Handl = '"&handl&"' LIMIT 1"

Men det virker bare ikke... Desuden kan jeg kun finde noget om LIMIT i forbindelse med SELECT på MYSQLs hjemmeside.
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 14:13 #9
Jeg kan jo kun snakke i gåder, når jeg ikke må se din kode...

Prøv

strSQL8="delete from tblPoints Where Point = '" & point & "' and Bruger = '" & bruger & "' and Handl = '" & handl & "' LIMIT 1"

http://www.mysql.com/doc/en/DELETE.html
Avatar billede grafikeren Nybegynder
09. februar 2004 - 14:35 #10
... Der var vist en fejl i asp. Er rettet nu. Tak for hjælpen.

Lige et ekstra spørgsmål:
Hvad hedder "ingenting" og "null" i "SQL sprog"? Jeg prøver at update en tabel:
Update tbl Set O = 'ingenting' and G = 'Null' Where id = '"&id&"'"
Avatar billede grafikeren Nybegynder
09. februar 2004 - 14:48 #11
Ok, jeg har fået O til at blive ''... Det var jo simpelt. Men spørgsmålet gik egentligt mest på, hvis G skal blive 'Null' (som er standard værdi for den). Lige nu bliver den bare lig ''.

(jeg har set, at jeg lavede en fejl i overstående sql sætning med and. Det er rettet)
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 14:48 #12
Det hedder null - uden '...' omkring
Avatar billede grafikeren Nybegynder
09. februar 2004 - 14:57 #13
Mange tak. Læg et svar
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 15:07 #14
Tak, jeg samler ikke på point.
Avatar billede grafikeren Nybegynder
09. februar 2004 - 15:14 #15
Nej, men derfor kan du vel godt tage imod dem... Det er vel en del af eksperten.dk
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 15:37 #16
Det er vel mit problem om jeg mener jeg har leveret et svar som jeg
vil stå så meget inde for, at jeg vil have "betaling" for det.

Så, nej tak, ingen point til mig.
Avatar billede grafikeren Nybegynder
09. februar 2004 - 15:49 #17
ok
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