28. november 2003 - 12:54
Der er
49 kommentarer og 2 løsninger
DELETE fra MySQL tabel
Hej Eksperter, Jeg har denne sql-sætning, men kan ikke få det til at virke: SQL = "DELETE FROM kurpart WHERE kursubid IN (SELECT id FROM kursub WHERE kurmainid = '" & nid & "')" MySQLConn.Execute(SQL) Jeg får følgende fejlbesked: [MySQL][ODBC 3.51 Driver][mysqld-3.23.57]You have an error in your SQL syntax near 'SELECT id FROM kursub WHERE kurmainid = '6')' at line 1 Er det forklaring nok? Kan nogen hjælpe? --jowns--
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
28. november 2003 - 13:09
#1
Hvis kurmanid er af typen tal skal du ikke have pinger rundt om variablen
28. november 2003 - 13:10
#2
Jo, det skal jeg når det er en MySQL database...
28. november 2003 - 13:11
#3
På den anden side kan det også være du skal lave helt om på din syntaks.. SQL = "DELETE FROM kurpart WHERE exists(SELECT id FROM kursub WHERE kurmainid = '" & nid & "')" Prøv at lave en select på ovenstående først ;-)
28. november 2003 - 13:12
#4
Den har jeg ikke hørt før - jeg tror du tager fejl, men prøv at fjen dem, hvis du stadig for fejl kan du prøve løsning 2 ( den med exists )
28. november 2003 - 13:15
#5
Jeg får samme fejl uanset om jeg bruger dit første eller andet forslag... :(
28. november 2003 - 13:16
#6
Så prøv og fjern de pinger
28. november 2003 - 13:16
#7
Det har jeg prøvet... Samme fejl....
28. november 2003 - 13:18
#8
Prøv at skriv din sætning ud lige før du udfører den...
28. november 2003 - 13:21
#9
Hvis jeg prøver denne: SQL = "DELETE FROM kurpart WHERE kursubid exists(SELECT id FROM kursub WHERE kurmainid = " & nid & ")" får jeg: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [MySQL][ODBC 3.51 Driver][mysqld-3.23.57]You have an error in your SQL syntax near 'exists (SELECT id FROM kursub WHERE kurmainid = 6)' at line 1
28. november 2003 - 13:22
#10
Du skalfjerne kursubid lige efter where - det havde jeg heller ikke på...
28. november 2003 - 13:23
#11
Altså: SQL = "DELETE FROM kurpart WHERE exists(SELECT id FROM kursub WHERE kurmainid = " & nid & ")"
28. november 2003 - 13:24
#12
Hmmm, hvordan finder "den" så ud af at den kun skal slette rækker fra kurpart hvor kursubid = (SELECT id FROM kursub WHERE kurmainid = " & nid & ")?
28. november 2003 - 13:26
#13
det er det du specificerer i din select i parantesen - prøv at sige select først så skal du se: SQL = "select * FROM kurpart WHERE exists(SELECT id FROM kursub WHERE kurmainid = " & nid & ")"
28. november 2003 - 13:29
#14
Giver dette resultat: select * FROM kurpart WHERE exists(SELECT id FROM kursub WHERE kurmainid = 6) Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [MySQL][ODBC 3.51 Driver][mysqld-3.23.57]You have an error in your SQL syntax near 'exists(SELECT id FROM kursub WHERE kurmainid = 6)' at line 1
28. november 2003 - 13:29
#15
Lidt mere forklaring : Når du bruger exists fortæller du "den" at det du leder efter i den yderste sætning skal eksistere i den inderste sætning.
28. november 2003 - 13:31
#16
Prøv at nøjes med at køre den sætning der er inde i parantesen... Hvad siger den så ?
Slettet bruger
28. november 2003 - 13:31
#17
er du sikker på at du har et felt kurmainid i tabellen kursub?
28. november 2003 - 13:32
#18
Ja, det er jeg sikker på, men kurmainid findes ikke i kurpart....
Slettet bruger
28. november 2003 - 13:35
#19
Og du har også et felt som hedder id i tabellen kursub?
28. november 2003 - 13:35
#20
mySQL mysqld-3.23.57 kan ikke lave sub select. du skal bruge version 4.0 ->
28. november 2003 - 13:35
#21
Er ID et reseveret ord i mysql ?
28. november 2003 - 13:36
#22
>>mrjowns Hvad sagde den inderste sætning ??
28. november 2003 - 13:38
#23
Der skulle ikke være noget problem med den inderste sætning - den række jeg gerne vil have fat i fra kursub er: id = 11 kurmainid = 6 og i kurpart id = 56 kursubid = 11 Så det skal virke...???
28. november 2003 - 13:40
#24
Jeg har prøvet at sætte id i [] men det hjælper ikke - stadig samme fejl...
28. november 2003 - 13:41
#25
Hvad siger nedenstående SQL = "select * FROM kurpart WHERE exists(SELECT kursub.id FROM kursub,kurpart WHERE kurmainid = " & nid & " and kursub.id =kurpart.kursubid )"
28. november 2003 - 13:42
#26
UPS, jeg tror ikke du behøver ,kurpart i den inderste...
28. november 2003 - 13:42
#27
Chris > jeg dkal delete, ikke selecte...
28. november 2003 - 13:44
#28
Ja, men det kan du vel selv finde ud af at erstatte ? ( det er ret nemt ;-) ) Nå alvorligt talt, det er sgu da bedre at se hvad man selecter før man deleter ellers ender man hurtigt op med for få data..
28. november 2003 - 13:46
#29
Har i øvrigt lige spottet bredums svar, så det er vist ingen grund til at fortsætte de der sætninger, da de alligevel ikke virker på din db
28. november 2003 - 13:47
#30
select * FROM kurpart WHERE exists(SELECT kursub.id FROM kursub,kurpart WHERE kurmainid = 6 and kursub.id =kurpart.kursubid ) Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [MySQL][ODBC 3.51 Driver][mysqld-3.23.57]You have an error in your SQL syntax near 'exists(SELECT kursub.id FROM kursub,kurpart WHERE kurmainid = 6 and kursub.id =k' at line 1
28. november 2003 - 13:48
#31
Det vil sige at du kan lave to sætninger: 1) et opslag i kursub til at finde din id 2) en delete på den anden tabel med den fundne id fra første
28. november 2003 - 13:50
#32
Kunne man evt. lave det på en anden måde - måske ved hjælp af flere sql-sætninger og en løkke??? Jeg skal bare have det til at virke - skide være med performance...
28. november 2003 - 13:52
#33
Prøv: 1) "select id from kursub where kurmainid = " & nid 2) åbn rs1 med ovenstående sql 3) "delete from kurpart where kursubid = " & rs1("id") - håber ikke jeg har fået dine id'er forkert i halsen - tjek dem lige
28. november 2003 - 13:53
#34
Jeg prøver igen!!!!!!! Du kan ikke med en mySQL version 3.23.57 lave sub select. du skal opgradere til version 4.0 ->
28. november 2003 - 13:55
#35
>> bredum :o) Jeg overså den også først - så resultatet bliver to opslag, det er jo så eneste mulighed hvis mrjowns ikke vil opgradere
28. november 2003 - 13:56
#36
Ikke kan - MySQL db'en ligger hos Wannafind (Webhotel)...
28. november 2003 - 13:57
#37
Det er da dybt oldnordisk ! Skæld dem ud ;-)
28. november 2003 - 13:58
#38
Hehe, du har ret!!!! Det vil jeg gøre!!! :-)
28. november 2003 - 13:58
#39
28. november 2003 - 13:59
#40
>> bredum :o) >>mrjowns Prøv lige den med de to sætninger før du hidser dig op :o)
28. november 2003 - 14:02
#41
Men s[ er der vel ikke andet at g're end dette: Set rs= Server.CreateObject("ADODB.Recordset") SQL = "SELECT id FROM kursub WHERE kurmainid = '" & nid & "'" Set rs = MySQLConn.Execute(SQL) Do While Not rs.EOF SQL2 = "DELETE FROM kurpart WHERE kursubid = '" & rs("id") & "'" MySQLConn.Execute(SQL2) rs.MoveNext Loop
28. november 2003 - 14:03
#42
Nemlig - det skulle virke på den oldnordiske Bredum skal have nogle af pointene da vi kunne have rodet rundt i de subselects LÆNGE uden ham :o)
28. november 2003 - 14:05
#43
Jeg tester lige og vender så tilbage...
28. november 2003 - 14:06
#44
OK - jeg er til rådighed en hel time endnu :o) - og så er jeg alvorligt bange for at den går hen og bliver mandag før jeg vender frygteligt tilbage ;-)
28. november 2003 - 14:09
#45
Hehe, det spiller! Faktisk tror jeg at jeg vil dele pointene mellem jer - vi havde roddet os ud på meget meget dybt vand hvis ikke Bredum var kommet med den ret vitale oplysning! Så Bredum > hvis du gider lave et svar, så vi kan få afsluttet...
28. november 2003 - 14:11
#46
>> mrjowns Godt det virker :o) Jeg giver dig fuldstændig ret - jeg havde ikke fantasi til at forestille mig en mySql der ikke kunne forstå sub-selects God weekend
28. november 2003 - 14:11
#47
det er hermed gjort :-)
28. november 2003 - 14:12
#48
Så skal der sq deles point ud... ;o) Chris > hvordan checker jeg lige hvilken version af MySQL mit webhotel benytter? God weekend til jer begge og tak for hjælpen!!
28. november 2003 - 14:14
#49
thanx 4 point. >>mrjowns det kan du se i fejlen siden giver... [MySQL][ODBC 3.51 Driver][mysqld-3.23.57]You have an error in your SQL syntax near 'SELECT id FROM kursub WHERE kurmainid = '6')' at line 1 din udbyder bruger version 3.23.57
28. november 2003 - 14:14
#50
Øh, øv - laver en fejl og ser hvad der står i fejlmeddelsen...eller få bredum til det ;-) Alvorligt: Det skal de da skrive, skal de ikke ?
28. november 2003 - 14:18
#51
DOH, tja det man bliver blind på først er jo ... øhhh, vist øjnene... TAK!!!
Kurser inden for grundlæggende programmering