Sql de sepete ekle uygulaması

E-ticaret sitelerinde gördüğümüz sepet işlemini veritabanı üzerinde nasıl gerçekleşiyor mini bir örnekle uygulayalım. Ms Sql Server üzerinde uyguladığımız örnek için gerekli araçlar; 1 adet database, içinde 3 tablo(Kullanıcı, Ürün, Sepet) ve bu tabloların birbirleri ile ilişkilendirilmesi.

Veritabanını ve tabloları oluşturduktan sonra ilişkilendirme işlemine geçin; Sepet tablosundaki primary key olan kullaniciid Kullanıcı tablosundaki kullaniciid ile tekrar Sepet tablosundaki primary key olan urunkod kolonunu Ürün tablosundaki urunkod kolonu ile ilişkilendirin. Uygulamayı çalıştırmak için kullanıcı ve ürün tablosuna kayıt eklemeyi unutmayın.

Sepet tablosunda iki tane primary key olduğunu dikkat etmişsinizdir. Bir tablo içinde iki veya daha fazla primary key kolon oluşturmak için tablo içinde shift tuşuna basarak primary key yapmak istediğiniz kolonların hepsini seçin sağ tuş tıklayıp primary key yapabilirsiniz.

Veritabanımız hazırsa sepete ekle uygulaması için stored procedure geçebiliriz.

[cc lang=”sql”]create proc sp_sepeteekle(@kullaniciid int, @urunid int, @adet int=1)
as set nocount on
if @kullaniciid is null or @urunid is null
return 0
else if exists(select * from tblsepet where kullaniciid=@kullaniciid and urunkod=@urunid)
update tblsepet set adet=adet+@adet where kullaniciid=@kullaniciid and urunkod=@urunid
else
insert into tblsepet values (@kullaniciid, @urunid, @adet)
set nocount off [/cc]

Aynı üründen tekrar eklediğinde sadece adet kısmı artıyor. Bu şekildeki mini sepet uygulamasından esinlenerek ileri uygulamalarınız da kullanabilirsiniz.

Procedure’ü çalıştırmak için(kullanıcı ve ürün girdiğinizi varsayarak);

[cc lang=”sql”]exec sp_sepeteekle 1,3,2[/cc]

“Sql de sepete ekle uygulaması” üzerine 6 yorum

  1. Merhaba. SQl Stored Procedure tek bir tabloda nasıl yapmak olur? Mesela bir tabloya veri eklediyimde bu veri onceden kayıtlı ise onun sadece adet kısmı artsın. Ben böyle yapdım ama olmadı.
    CREATE PROCEDURE spEkle (@urun nchar(100), @adet INT=1)
    AS SET nocount ON
    IF @urun IS NULL
    RETURN 0
    ELSE IF EXISTS(SELECT * FROM Urunler WHERE Urun=@urun)
    UPDATE Urunler SET say=say+@adet WHERE Urun=@urun
    ELSE
    INSERT INTO Urunler VALUES (@urun,@adet)
    SET nocount off

  2. sepete ürünü ekledigimizde 15 dak sonra satın alınmazsa silinmesini istiyorum nasıl olucak

    1. detayına girmeden öneride bulunayım, db tarafında trigger kullanabilirsin

  3. merhabalar sessionlarla sepete ekle yaptım satın al dıye bır buton koyacagım bu sepetteki verileri veritabanına nasıl kayıt edebilirim yardımcı olursanız sevınırım

    1. Buradaki tblsepet tablosu zaten müşterinin satın aldığı ürünlerin bulunduğu tablo. Yani satın alınanlar veritabanında kayıtlı oluyor.

      İstersen bu tabloya ayrıca satın alındımı bit değerinde kolon ekleyebilirsin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir