5.00 / 1 oy

Sql Server'da Select yaparak Delete sorgusu yazmak

Sql Server'da bir kullanıcıya ait birden çok bilginin ilişkili tablolarda saklandığı bir senaryoda aşağıdaki tablolar mevcut.

- Kullanicilar

- Siiparisler

- SiparisUrunleri 

Bu tablolarda primary ve foreign key'ler zaten tablo adlarından da tahmin edilebilir. Problem ise ben bir kulllanıcıyı sistemden sildiğimde bağlı olan siparişleri ve sipariş kalemlerini de silmek istiyorum.

Siparişler tablosunda kullaniciadi bilgisi olduğu için ilk 2 tabloyu silmek kolay:

  1. delete from kullanicilar where kullaniciadi=@username
  2. delete from siparisler where kullaniciadi=@username

Ama sipariş kalemleri, SiparisUrunleri  tablosunda saklanıyor ve foreignkey olarak Siiparisler tablosuna bağlı. Ama ben bir kullanıcıyı sildiğimde:

- Kullanıcının

- Kullanıcının siparişlerinin

- Kullanıcı siparişlerinin tüm kalemlerinin

silinmesini istiyorum. Delete işlemini Select sorgusu kullanarak nasıl yapabilirim?

kaanbey

20.02.2020 22:00

Bu soru 1 kez yanıtlandı.

  • 22 Şubat 2020 18:48
    22

    Merhabalar,

    Yazmanız gereken sorgunun şablonu şu şekilde:

    1. DELETE FROM alttablo
    2. FROM alttabloadi AS alttablo
    3. INNER JOIN usttabloadi AS usttablo ON alttablo.usttabloID = usttablo.ID
    4. WHERE sartlar;

    Kodları sizin örneğinize göre uyarlarsak da:

    1. DELETE FROM sipariskalemleri
    2. FROM tbl_sipariskalemleri AS sipariskalemleri
    3. INNER JOIN tbl_siparisler AS siparisler ON sipariskalemleri.siparisID = siparisler.ID
    4. WHERE siparisler.kullanici=@username;
    5.  
    6. delete from tbl_siparisler where kullanici=@username
    7. delete from tbl_kullanicilar where kullanici=@username

     

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Sql Server'da Select yaparak Delete sorgusu yazmak

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.