none
SQL de Store Procedure Birbirine bağlı tablodan şartlı veri silme RRS feed

  • Soru

  • Yukarıdaki gibi iki adet tablom var üstdeki tablom SepetIcerikTB tablosu sepete atılan ürün detaylarını tutuyorum aşağıdaki ise ShoppingCart tablom hangi sepet e hangi ürün ait onu tutuyorum SepetIcerikTB içerik tablosundan bir satırsilindiğinde ShoppingCart  tablosundaki SepetID ye bağlı olan  SepetIcerikTB tablosunda başka kayıt varmı diye kontrol etmek ve eğer ki SepetIcerikTB tablosunda SepetID ye bağlı başka kayıt yok ise en son SepetIcerikTB tablosundan silinen satırla beraber ShoppingCart tablosundaki satır da silinsin istiyorum ana aşağıdaki gibi denemelerim de SepetIcerikTB veriyi siliyorum ama başka bu ID de kayıt yoksa ShoppingCart tablosundan gereken setırı silemedim

    ALTER PROCEDURE [dbo].[ShoppingCartRemoveItem]
    (
    @CartID char(36),
    @ProductID int
    )
    AS
    BEGIN
    DELETE FROM SepetIcerikTB
    WHERE ProductID = @ProductID and SepetID IN
    (
    SELECT ShoppingCart.SepetID
    FROM ShoppingCart JOIN SepetIcerikTB ON ShoppingCart.SepetID = SepetIcerikTB.SepetID
    WHERE ShoppingCart.SepetID = ShoppingCart.SepetID and ShoppingCart.CartID = @CartID and SepetIcerikTB.ProductID = @ProductID
    )
    END
    BEGIN
     		
    DELETE FROM ShoppingCart
    WHERE SepetID IN
    (
    SELECT SepetIcerikTB.SepetID
    FROM ShoppingCart JOIN SepetIcerikTB ON SepetIcerikTB.SepetID = null
    WHERE ShoppingCart.CartID = @CartID and ShoppingCart.SepetID = null 
    )
    	
     END

    bana yardım ederseniz sevinirim taşakkür ederim


    abdurrahman durgun

    27 Haziran 2014 Cuma 09:33

Yanıtlar

  •  Kendi sorunumu kendi çabalarımla çözdüm kodlarımın son hali şu şekilde başkaları da aynı sorunu yaşarsa kullansın diye paylaşmak istedim 

    ALTER PROCEDURE [dbo].[ShoppingCartRemoveItem]
    (
    @CartID char(36),
    @ProductID int
    )
    AS
    BEGIN
    DELETE FROM SepetIcerikTB
    WHERE ProductID = @ProductID and SepetID IN
    (
    SELECT ShoppingCart.SepetID
    FROM ShoppingCart JOIN SepetIcerikTB ON ShoppingCart.SepetID = SepetIcerikTB.SepetID
    WHERE ShoppingCart.SepetID = ShoppingCart.SepetID and ShoppingCart.CartID = @CartID and SepetIcerikTB.ProductID = @ProductID
    )
    
    
    BEGIN
    
    	DELETE FROM ShoppingCart 
    	WHERE CartID = @CartID and SepetID NOT IN
    	(
    	SELECT SepetID 
    	FROM SepetIcerikTB 
    	WHERE SepetID IS NOT NULL
    	);
      
    END
    END

    Teşekkürler Microsoft SQL Form :)


    abdurrahman durgun

    28 Haziran 2014 Cumartesi 08:25

Tüm Yanıtlar

  •  Kendi sorunumu kendi çabalarımla çözdüm kodlarımın son hali şu şekilde başkaları da aynı sorunu yaşarsa kullansın diye paylaşmak istedim 

    ALTER PROCEDURE [dbo].[ShoppingCartRemoveItem]
    (
    @CartID char(36),
    @ProductID int
    )
    AS
    BEGIN
    DELETE FROM SepetIcerikTB
    WHERE ProductID = @ProductID and SepetID IN
    (
    SELECT ShoppingCart.SepetID
    FROM ShoppingCart JOIN SepetIcerikTB ON ShoppingCart.SepetID = SepetIcerikTB.SepetID
    WHERE ShoppingCart.SepetID = ShoppingCart.SepetID and ShoppingCart.CartID = @CartID and SepetIcerikTB.ProductID = @ProductID
    )
    
    
    BEGIN
    
    	DELETE FROM ShoppingCart 
    	WHERE CartID = @CartID and SepetID NOT IN
    	(
    	SELECT SepetID 
    	FROM SepetIcerikTB 
    	WHERE SepetID IS NOT NULL
    	);
      
    END
    END

    Teşekkürler Microsoft SQL Form :)


    abdurrahman durgun

    28 Haziran 2014 Cumartesi 08:25
  • Abdurrahman bey;

    Daha önce sorduğunuz sorularıda düşünürsek, hepsi yanıtlanmış, çözüm bulmuşsunuz. İnsanlar görmemiş olabilir, veri tabanı mantığınızı bilmediğinden dolayı, yapınızı etkilemek istememiş olabilirler. Ön yargılı davranmamak gerektiğini düşünüyorum :)

    Rica ederiz :)


    İletişim

    28 Haziran 2014 Cumartesi 08:33
  • slm ben kimseye sitem etmedim yanlış anlaşıldı sanırım yardımcı oluyor arkadaşlar saolsun evet bilmiyorum yeniyim ve kendi çabalarımla birşeyler yapmaya çalışıyorum insanların nezaketi ve yardım severliğinden de çok memnunum gerçekten birçok konuda bana yardımcı oldular teşekkür ederim ;)

    abdurrahman durgun

    28 Haziran 2014 Cumartesi 08:53