Avatar billede el-prebsi Nybegynder
30. juli 2003 - 22:14 Der er 2 kommentarer

Sletning med relationer

Hej

Jeg har en database med nogle varer. Et felt hedder "varenavn" i tabellen "products". Denne tabel har relationer i en anden tabel - nemlig "bestillingsliste". Når man sletter en varer fjernes der ikke noget i "bestillingsliste" da der ikke er noget felt der har relation til tabellen "products". For at oprette en relation skal jeg igennem en tredje tabel som hedder "details". Dvs. hvis jeg skal have fat i varenavnet udfra en post i tabellen "bestillingsliste" skal jeg lave noget a'la:

"SELECT details.varenavn FROM
(bestillingsliste AS B INNER JOIN details AS D ON B.varenr = D.varenr)"

Men hvis jeg nu skal slette posten i "bestillingste" - hvordan kan jeg så gøre det? Kan det gøres ved hjælp af en relation eller noget andet smart? Dvs. noget som f.eks.

"DELETE FROM (bestillingsliste AS B INNER JOIN details AS D ON B.varenr = D.varenr) WHERE B.varenavn = " + "varens navn"

Varens navn er altid unik og varenr er altid "varens navn" + "mellemspecifikation" + "kode".

Jeg kunne teste for alle mulige koder, men det vil også være åndssvagt at udøve vold mod serveren på den måde.

Nogle gode forslag!


På forhånd tak.
Avatar billede arne_v Ekspert
30. juli 2003 - 22:26 #1
En skam at det er MySQL fordi normalt kan SQL følgende:

DELETE FROM bestillingsliste WHERE varenr IN
(SELECT varenr FROM details WHERE varenavn='xxxxxx')

men det kan man ikek i MySQL førend version 4.1 ...
Avatar billede arne_v Ekspert
30. juli 2003 - 22:28 #2
En mulig workaround var at flytte noget logik op i den applikation.

SELECT varenr FROM details WHERE varenavn='xxxxxx'

så lade applikationen hente hver værdi og lave:

DELETE FROM bestillingsliste WHERE varenr = n

for hvert resultat.

Men måske er der nogen som kender et MySQL trick.
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

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