Avatar billede sqlproblem Nybegynder
31. juli 2008 - 18:43 Der er 7 kommentarer

DELETE Query

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?
Avatar billede arne_v Ekspert
31. juli 2008 - 18:46 #1
noget a la:

DELETE FROM tabel1
WHERE id NOT IN(SELECT id FROM tabel2)
Avatar billede sqlproblem Nybegynder
01. august 2008 - 09:29 #2
Virkede ikke ehlt :(
Avatar billede sqlproblem Nybegynder
01. august 2008 - 09:32 #3
Jeg får en fejl som siger at den ikke kunne finde kundedata.mdb (som er navnet på den ene tabel)
Avatar billede arne_v Ekspert
01. august 2008 - 21:31 #4
Snakker vi MySQL eller Access ?

Og kan vi få den præcise fejl ?
Avatar billede victor22 Nybegynder
12. august 2008 - 02:20 #5
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

Hilsen
Avatar billede arne_v Ekspert
12. august 2008 - 02:43 #6
victor>

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.
Avatar billede arne_v Ekspert
30. august 2008 - 02:10 #7
sqlproblem ?
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
Computerworld tilbyder specialiserede kurser i database-management

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