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:

delete from kullanicilar where kullaniciadi=@username
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:

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

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

    DELETE FROM sipariskalemleri
    FROM tbl_sipariskalemleri AS sipariskalemleri
    INNER JOIN tbl_siparisler AS siparisler ON sipariskalemleri.siparisID = siparisler.ID
    WHERE siparisler.kullanici=@username;
    
    delete from tbl_siparisler where kullanici=@username
    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.