Avatar billede hnto Nybegynder
16. november 2005 - 22:41 Der er 4 kommentarer og
1 løsning

fejl i lille SQL delete sætning

Jeg forsøger at køre denne SQL via en forespørgsel, men Access beder mig om at specificere hvilken tabel der skal slettes fra ?!?!

DELETE * FROM Master
LEFT JOIN master_stage ON Master.refID = master_stage.refID
WHERE (((master_stage.refID) Is Null));

Det jeg vil er at slette de records i tabellen MASTER der ikke længere har reference i tabellen MASTER_STAGE. Jeg joiner tabellerne på refID.

Kører jeg denne SQL som en SELECT sætning viser den fint den ene record der skal "slettes"

NB.
Den viser en record fordi der kun er en record til forskel i de to tabeller ;-))

Please help quick...!!
Avatar billede inglenook Praktikant
16. november 2005 - 23:02 #1
Hvis jeg forstaar dig ret vil du slette alle records fra Master hvor der ikke laengere findes en tilsvarende refID i master_stage. Er det korrekt ?
Saa burde nedenstaaende virke:
delete from Master where refID not in (select refID from master_stage)
Avatar billede hnto Nybegynder
16. november 2005 - 23:23 #2
Du har rigtigt nok forstået spørgsmålet, men hvis jeg bruger bruger din SQL sætning "kører" queryen næsten ikke.
Den stopper tilsyneladende ved første blå felt (i de blå prikker der viser hvor langt i processen i Queryen er.)
Avatar billede hnto Nybegynder
16. november 2005 - 23:25 #3
kan den ikke optimeres ved at lave en INNER JOIN med tabellen Master_stage ?
Avatar billede inglenook Praktikant
16. november 2005 - 23:35 #4
tror ikke man kan bruge join i en delete, men har helt aerligt aldrig arbejdet med access....
Mon ikke der er andre der kan hjaelpe...?

Proev evt.
delete from Master where Master.refID not in (select master_stage.refID)
Avatar billede hnto Nybegynder
16. november 2005 - 23:45 #5
den får syntax error på dette, men har således prøvet:

delete from Master where Master.refID not in (select master_stage.refID FROM master_stage)

Dette er det samme som den første...tager en krig og går umiddelbart i lås..


Nå, så bliver jeg måske nødsaget til at løse dette med en ekstra query således:

Først opdaterer jeg feltet master.refID til en given værdi (eks. "SLETTES") på de records der er divergente i de to tabeller.

så laver jeg en ny Query der simpelt sletter alle records hvor feltet refID = SLETTES

(DELETE * from Master where master.refID = "Slettes"

Det virker da ;-)) men det er naturligvis irretrende at man skal lave 2 fqueryes for at udføre 1 handling....

thats life...
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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