Hej Jeg har to næsten identiske tabeller, hvor jeg skal slette de poster i den ene tabel som er forskellige fra dem i den anden tabel. Altså hvis posterne ikke er i den ene tabel, skal de slettes med forespørgslen.
Jeg bruger følgende forespørgsel: SELECT Kunde.Kundenummer FROM Kunde LEFT JOIN KundeData ON Kunde.Kundenummer = KundeData.Kundenummer WHERE (((KundeData.Kundenummer) Is Null));
Jeg har efterhånden forstået at jeg ikke kan lave joins når man bruger DELETE, og man i stedet skal bruge sub selects, men uansat hvad jeg gør, får jeg fejl. Nogen der kan hjælpe?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Nej man kan ikke bruge Delete direkte - fordi den vil så forsøge at slette en hel tabel i stedet for at forstå det som at slette en instans i tabellen.
det er to forskellige måder - man man bruge select from - og derefter vælge en delete query - eller man kan bruge en joing i en subquery : DELETE Foo WHERE PK IN ( SELECT PK FROM bar ) Hvor man ser at tabelnavn - nævnes til sidste.
den query du forsøger dig med giver dig nok en fejl på grund af "identitet" med en delete query der sletter den data der også findes i en anden tabel kan joing som følgende.
DELETE kunde FROM kunde INNER JOIN KundeData // eller det du skriver Left join (Er ikke sikker!) ON kunde.PK = Kundedata.PK
Hvis man erstatter: tabel1->foo tabel2->bar id->pk
Så er der vist kun en forskel nemlig at jeg bruger NOT fordi spørger skrev: hvis posterne *ikke* er i den ene tabel, skal de slettes med forespørgslen.
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.