On Thu, 17 Jul 2003 22:47:15 +0000 (UTC), Henrik Stidsen
<idontwantnospam@hs235.dk> wrote:
>> Intet problem! Med MySQL 4 kan man lave DELETE fra en tabel, med
>> et resultatsæt hen over flere tabeller. Det er dog en
>> DELETE-syntaks, man måske ikke er så vant til at se.
>>
http://www.mysql.com/doc/en/DELETE.html
>Ser ganske forfærdeligt avanceret ud :)
Løsningen er nu stadigvæk kun én simpel SQL-forespørgsel. Jeg synes
ikke at SELECT'en og DELETE'n ligger så langt fra hinanden:
> SELECT t1.id FROM t1 LEFT JOIN t2 ON t1.link = t2.id WHERE t2.id IS NULL;
> DELETE t1 FROM t1 LEFT JOIN t2 ON t1.link = t2.id WHERE t2.id IS NULL;
Det mest spøjse er måske at man angiver tabelnavn alene, allerede før
FROM-delen.
... og ja, LEFT JOIN .. IS NULL er rigtigt nok et typisk "mangel på
subselects"-stunt, men hvis man i forvejen er vant til MySQL, så bør
den notation ikke længere være så skræmmende :)
(ellers er det bare at vente til mysql 5.1, hvor der kommer
constraints, så man ikke i første omgang skal ud i en situation, hvor
man skal omgå subselects, for at blive fri for orphans... eller
noget...)
>Jeg fandt en anden løsning - lidt mere PHP kodning og lidt flere SQL
>request men samme resultat til sidst. Fylder omkring 35 linier PHP
>kode...
Yep, så at jeg kom et par minutter for sent.
--
- Peter Brodersen