MySQL DELETE ile birden fazla tabloda veri silmek

MySQL üzerine paylaşımlarımı beğendiğinize sevindim. O halde ilginizi çekecek bir örnek daha vermek istiyorum. İnanıyorum ki çok işinize yarayacak 😉

MySQL DELETE ile birden fazla tabloda veri silmek

Hemen bir örnek vermek gerekirse, üyelik sistemi düşünün. Bir tabloda üyenin oturum açma ve diğer bir tabloda da profil bilgileri yer alıyor. Oturum açma verilerinin (kullanıcı adı, şifre, e-posta v.b.) uye adındaki tabloda, ve bu üyelere ait profil bilgilerinin ise uyedata tablosunda olduğunu kabul edelim. Üyelerin tanımlama numaraları ID ve profil tablosuna bağlantıları ise uyeID olsun. Ayrıca uye tablomda, üyelerin kayıt tarihinin yer aldığı bir de tarih sütunu yer alsın. Amacım, belli bir tarihten daha önce kayıt olanları silmek ise;

[SQL]DELETE bu, bud FROM uye AS bu, uyedata AS bud WHERE bu.ID=bud.uyeID AND tarih<'2008-08-09 20:05:30'[/SQL] sorgusu, işlemi gerçekleştirecektir. Üye hem uye hem de uyedata tablosundan silinir. Normalde bu işlemi gerçekleştirmek için önce uye tablosuna bağlanır ve belirttiğimiz tarihten önce kayıt olan üyelerin ID numaralarını toplar ve bir dizi değişkene yazardık. Sonrasında uyedata tablosunun uyeID sütunun altında eşleşenleri siler ve en son olarak uye tablosundaki ID sütunu altında eşleşenleri silerdik. Ancak gördüğünüz üzere buna hiç gerek yokmuş 🙂