Avatar billede henriklaursen Nybegynder
18. maj 2004 - 16:28 Der er 11 kommentarer

Omskrivning af SELECT til DELETE

Hej..
hvordan skal jeg omskrive denne til at slette istedet for at selecte ?


SELECT
dateletter.id as sletid,
dateletter.tilbruger,
dateletter.frabruger,
dateuser1.id,
dateuser2.id
FROM dateletter
LEFT JOIN dateuser AS dateuser1 ON dateuser1.id = dateletter.tilbruger
LEFT JOIN dateuser AS dateuser2 ON dateuser2.id = dateletter.frabruger
where dateuser1.id IS NULL and dateuser2.id IS NULL


håber nogle kan hjælpe.
synes ikke ejg kan få held med det...

el. er der evt en anden smart måde at gøre det på ??
Avatar billede michael_stim Ekspert
18. maj 2004 - 16:39 #1
DELETE * FROM dateletter
Avatar billede michael_stim Ekspert
18. maj 2004 - 16:40 #2
Oj den blev sendt for tidligt ;o)
Avatar billede michael_stim Ekspert
18. maj 2004 - 16:44 #3
DELETE * FROM dateletter, dateuser1, dateuser2 where dateuser1.id = dateletter.tilbruger AND dateuser2.id = dateletter.frabruger

Ved ikke om det går men det er da et forsög värd.
Avatar billede michael_stim Ekspert
18. maj 2004 - 16:46 #4
Har du foreign key kan du jo bruge "ON CASCADE DELETE"
Avatar billede michael_stim Ekspert
18. maj 2004 - 16:47 #5
[ON DELETE {CASCADE}] Hedder det selvfölgelig.
Avatar billede arne_v Ekspert
18. maj 2004 - 19:25 #6
MySQL understøtter kun foreign keys med InnoDB tabeller - ikke med MySIAM tabeller
Avatar billede michael_stim Ekspert
18. maj 2004 - 19:58 #7
Ja det er sandt ;o)
Avatar billede henriklaursen Nybegynder
19. maj 2004 - 08:37 #8
Hej Michael.
kan ikke lige fået den til at virke.
men, kan også se i sætningen, at den slette der steder hvor tilbruger og dateruser.id findes.
det er det den ikke skal.

Den skal slette i dateletter hvis dateletter.tilbruger og dateletter.frabruger ikke findes i dateuser(.id) tabellen.
Avatar billede michael_stim Ekspert
19. maj 2004 - 09:33 #9
DELETE * FROM dateletter where(SELECT
dateletter.id as sletid,
dateletter.tilbruger,
dateletter.frabruger,
dateuser1.id,
dateuser2.id
FROM dateletter
LEFT JOIN dateuser AS dateuser1 ON dateuser1.id = dateletter.tilbruger
LEFT JOIN dateuser AS dateuser2 ON dateuser2.id = dateletter.frabruger
where dateuser1.id IS NULL and dateuser2.id IS NULL)

Et vildt skud i tågen. Kan god se hvor du vil hen, skal kikke på det.
Avatar billede henriklaursen Nybegynder
19. maj 2004 - 10:17 #10
Jeg har tænkt noget på samme måde.. og tror nok også at det vil virke i en mysql 4.1

Problemet er bare at jeg kører med en 4.0, og hvad jeg lige kan læse mig til, så kan man ikke lave subqueries i den version.
men --- så må jeg jo bare tale godt med administratoren af den webserver jeg bruger :-)
Avatar billede henriklaursen Nybegynder
26. maj 2004 - 14:22 #11
nå, jeg har droppet det igen..
vi programmerede det hele i noget php script istedet..
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