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 fra QNAP 
 
 
	
		
								
					
				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