Avatar billede dmy Nybegynder
28. april 2009 - 11:25 Der er 6 kommentarer og
2 løsninger

Hvordan sletter man kategori samt tilknyttende indhold

Jeg har fx. et galleri.

Eks. tabellerne

galleri
galID
billede
fk_kategori_id

kategori
katID
kategori

Hvordan kan man slette en katgori samtidig man så også sletter de tilknyttede billeder der er til kategorien?
Avatar billede jakobdo Ekspert
28. april 2009 - 11:48 #1
Det bliver du nød til at lave som følger:

DELETE FROM pictures WHERE category = 2 //Sletter billeder til en kategori
DELETE FROM category WHERE id = 2 //Sletter kategorien
Avatar billede j4k0b Nybegynder
28. april 2009 - 14:18 #2
Eller du kan få MySQL til at gøre det automatisk:

CREATE TABLE pictures (
    PictureID INT NOT NULL,
    CategoryID INT NOT NULL,
    FOREIGN KEY (CategoryID) REFERENCES Category(CategoryID) ON DELETE CASCADE,
    PRIMARY KEY (PictureID)
);


Du kan læse mere om FOREIGN KEY og ON DELETE CASCADE på:
http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
Avatar billede jakobdo Ekspert
28. april 2009 - 14:20 #3
Og det kræver så også du anvender innodb og ikke myisam.
Avatar billede coderdk Praktikant
29. april 2009 - 01:27 #4
InnoDB er at foretrække, frem for MyISAM :)

Men jakobdo's oversat til dine tabeller:

DELETE FROM galleri WHERE fk_kategori_id = 2 //Sletter billeder til en kategori
DELETE FROM kategori WHERE katID = 2 //Sletter kategorien

Alternativt med INNER JOIN:

DELETE g, k FROM galleri AS k INNER JOIN kategori AS k
WHERE g.fk_kategori_id = k.katID AND k.katID = 2

Den er utestet men burde virke - Hvis du derimod bruger InnoDB med foreign key constraints skal du kun slette fra én tabel ad gangen, da mysql's optimizer er lidt spøjs af og til :P
Avatar billede dmy Nybegynder
20. maj 2009 - 10:52 #5
Tak for det smid et svar
Avatar billede jakobdo Ekspert
20. maj 2009 - 11:06 #6
Svar!
Avatar billede coderdk Praktikant
20. maj 2009 - 13:18 #7
Afvis mit, hvis du ikke kunne bruge INNER JOIN-versionen :)
Avatar billede jakobdo Ekspert
27. maj 2009 - 10:03 #8
Takker for point.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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