bunun için trigger yazılması daha sağlıklı olur ama ben sana sorgu ile ağaç yapısını silme olayını basitçe anlatayım, işi öğrendikten sonra trigger yazmayı öğrenmelisin:

şimdi mesela uyeler tablomuz olsun, bu kişinin ilanları da ilanlar tablosunda tutulsun. ilanlar tablosunda da uye_id hücremiz olsun ki ilişkiyi sağlayabilelim. hatta bir tablo daha koyalım, atıyorum mesela mesajlar diye tablo olsun. bunda da uye_id hücresi olsun ilişki sağlansın.

sonuç şu:

- uyeler
> id
> kullanici_adi
> sifre

- ilanlar
> id
> uye_id
> ilan_baslik

- mesajlar
> id
> uye_id
> baslik
> icerik

şimdi biz uyeler tablosundan 1 üye silinince bağlı olduğu diğer tablolardaki kayıtları da silelim. mesela id'si 1 olan üyeyi silelim.

sorgumuz:
Alıntı
SELECT * FROM uyeler u
LEFT JOIN ilanlar i ON i.uye_id = u.id
LEFT JOIN mesajlar m ON m.uye_id = u.id
WHERE u.id = 1
burda dikkat edersen kalın yaptığım yerlerde ilişkiyi uyguladım. bu sorgu çalışınca 1 id'li uyenin kendisi, ilanları ve mesajları bütün halinde listelenir.

silmek için SELECT * yerine DELETE u.*, i.*, m.* yazmak yeterli olur.

sonuç:
Alıntı
DELETE u.*, i.*, m.* FROM uyeler u
LEFT JOIN ilanlar i ON i.uye_id = u.id
LEFT JOIN mesajlar m ON m.uye_id = u.id
WHERE u.id = 1
NOT: bu işlemi daha da kısa hale getirebilirsin. sonraki aşama olarak trigger öğren demiştim. triggeri öğrenirken foreign key metodunu da öğreneceksin.
tablolar arasında ben sorgu ile ilişki kurdum, bunu foreign key ile kısaltabiliyoruz. arkaplanda tabloları bağlıyor, biz sadece DELETE FROM uyeler WHERE id=1 sorgusunu çalıştırıyoruz, o otomatik olarak ilişkili olduğu yerlerden de kayıtları siliyor.

döngü içinde döngü yazarak fuzuli kod yazmış oluyorsun, bu şekilde tek sorgu ile istediğini yapabilmiş olacaksın. anlayamadığın yer olursa sor.