23. juni 2004 - 22:51Der er
7 kommentarer og 1 løsning
Der kan ikke slettes fra de angivne tabeller
Det her stiger over mit hoved. Jeg har lige lavet en smart rutine til at trække friske data ind i bassen fra et regneark, som man vælger. Vi skal lige have slettet de records, som ikke har været 'brugt', alså delete * from tbl1 left join tbl2 on tbl1.id=tb2.id where (tbl2.id is null) - hvor tbl2 indehlder brugte id. Det vil den fandme ikke ( Der kan ikke slettes fra de angivne tabeller.)
man kan sagten slette enkeltvis/flere fra select forespørgelsen:
SELECT T33.RegNr AS sletmig FROM T33 LEFT JOIN T04 ON T33.RegNr = T04.RegNr WHERE (((T04.RegNr) Is Null));
Når jeg så laver selectforespørgelsen om til en sletteforespørgelse vil den ikke virke:
DELETE t33.* FROM T33 LEFT JOIN T04 ON T33.RegNr = T04.RegNr WHERE (((T04.RegNr) Is Null));
Er det mig, der er blevet for træt og ikke kan se skoven for bar træer ??!!
Thomas - tak - hvorfor tænke jeg ikke på nestede forsprøgelser. Din løsning 'NOT IN' er ikke rigtig, fordi den giver resultatet 0 records. Men den fik min trætte hjerne til at tænke igen og her er løsningen som virker:
DELETE[tbl-vognpark].* FROM [tbl-vognpark] WHERE NOT exists (Select * From [tbl-auto] where [tbl-vognpark].regnr = [tbl-auto].regnr);
Proaccess - jeg svarede førend at jeg havde prøvet dit svar - det virker faktisk.
DELETE DISTINCTROW [tbl-vognpark].* FROM [tbl-vognpark] LEFT JOIN [tbl-auto] ON [tbl-vognpark].RegNr = [tbl-auto].RegNr WHERE ((([tbl-auto].RegNr) Is Null));
Hvorfor Access skal have en DISTINCTROW kommando for at virke, kan skyldes, at der mellem t33 og t04 er en 1-mange relation.
Jeg takker begge to for hjælpen. Når man er træt tænker man ikke klart mere. Hvor 'NOT IN' ikke er negationen af 'IN' kræver nok nogle dybe knæbøjninger indenfor relationsalgebraen.
Proaccess-> ja, ikke? (jeg vidste godt at den virkede, men bare ikke at den havde betydning i denne sammenhæng)
Synes godt om
Ny brugerNybegynder
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.