Avatar billede JJ77 Juniormester
18. januar 2006 - 01:08 Der er 3 kommentarer og
1 løsning

Slet en record som hører til to tabeller

mysql_query("DELETE FROM salgAfProdukt WHERE loebetidForAnnonce < NOW()");

Ovenstående sætning sletter de annoncer som har oversteget den nuværende dato... Mit problem er at de annoncer som bliver slettet kan have et billede tilknyttet i en anden tabel, som så desværre ikke også bliver slettet.

deres relation er:
salgAfProdukt "id" = billede "artikelid"

Er her nogle som ved hvordan jeg får min sql-sætning til at slette i begge tabeller?
Avatar billede fixxxer Nybegynder
18. januar 2006 - 01:57 #1
Du er nok tvunget til at skulle ud i noget lign.:

$query = mysql_query("SELECT * FROM salgAfProdukt WHERE loebtidForAnnonce < NOW()");
while ($fetch = mysql_fetch_assoc($query)) {
    mysql_query("DELETE FROM salgAfProdukt WHERE id = ".$fetch['id']);
    mysql_query("DELETE FROM billeder WHERE artikelid = ".$fetch['id']);
}
Avatar billede pidgeot Nybegynder
18. januar 2006 - 02:45 #2
Jf. http://dev.mysql.com/doc/refman/4.1/en/delete.html burde det kunne lade sig gøre med denne sætning:

DELETE salgAfProdukt, billede FROM salgAfProdukt, billede WHERE billede.artikelid=salgAfProdukt.id AND salgAfProdukt.loebetidForAnnonce<NOW()
Avatar billede JJ77 Juniormester
18. januar 2006 - 22:45 #3
Det virker sq.. hurra, og mange tak..
Jeg har lige et sidste spørgsmål vedr. sql-sætningen. Kan nedenstående ikke bruges, og i givet fald hvorfor ikke? Den er bare lidt kortere;)

DELETE FROM salgAfProdukt, billeder WHERE billeder.artikelid=salgAfProdukt.id AND salgAfProdukt.loebetidForAnnonce < NOW()
Avatar billede pidgeot Nybegynder
19. januar 2006 - 07:55 #4
Den overvejede jeg også, men det passer ikke ind i den syntaks der er givet i dokumentationen (se mit link fra før) - uanset hvilken af de to du bruger, skal tabellerne skrives to gange.

Jeg gætter på det er for at minimere risikoen for at man sletter mere end det var meningen - det er eksempelvis muligt at lave en query der sletter billeder fra gamle annoncer uden at slette selve annoncen:

DELETE billede FROM salgAfProdukt, billede WHERE billede.artikelid=salgAfProdukt.id AND salgAfProdukt.loebetidForAnnonce<NOW()
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