none
Sql de Giren ürün ile çıkan ürünün eşit sayıda olması RRS feed

  • Soru

  • İyi günler ben bir stok takip projesi yapıyorum. Giriş yapılan işlemlerim ve çıkış yapan işlemlerim var .

    örneğin 100 adet yumurta girişi yapıldı daha sonra çıkış için bir 20 adet yumurta çıkışı yapıldı ve daha sonra 30 adet yumurta çıkışı yapıldı en son çıkışta 60 adet yumurta çıkışı yapılması istenince  yeterli sayıda yumurta yok hatasını vermesini istiyorum. C# form application üzerinde çalışıyorum. Şimdiden çok teşekkürler :)

    11 Temmuz 2019 Perşembe 06:48

Yanıtlar

  • Aklınızda olsun, bu tip sorularda mutlaka tablo yapınızı paylaşın. O sebeple cevapları artık siz kendi tablolarınıza uydurmak durumundasınız.

    Yöntem 1

    Insert query'nize Where şartı ekleyerek çözebilirsiniz. Sonrasında insert işlemi için 0 dönerse bilirsin ki yeterince stok yok.

    INSERT INTO Stok_Hareket .... WHERE {DusulecekStokMiktari} <= {MevcutStokMiktari}

    Burada mevcut stok miktarını da bu query içinde hesaplamalısınız, dışarıda hesaplayıp parametre olarak vermeyin, aksi durumda eş zamanlılık problemi oluşacaktır. Sub query ile çözebilirsiniz mesela.

    <= (select sum(girdi) - sum(cikti) from... ) gibi gibi... Tablo yapısını bilmediğimden sıkıyorum.

    Yöntem 2

    İlla C# tarafında çözmek isterseniz şu adımları izleyebilirsiniz.

    1. Transaction başlat
    2. Mevcut stok durumunu çek // sql
    3. Yapılmak istenen çıkış mevcut stoktan fazla ise kapat transaction'ı ve bas hatayı
    4. Yeterince stok varsa çıkış işlemini kaydet // sql
    5. Mevcut stok durumunu tekrar çek // sql
    6. Stok 0 dan küçük ise transaction'ı rollback et, bas hatayı
    7. Stok 0 veya büyük ise transactioni commit et


    www.cihanyakar.com



    11 Temmuz 2019 Perşembe 09:37

Tüm Yanıtlar

  • Aklınızda olsun, bu tip sorularda mutlaka tablo yapınızı paylaşın. O sebeple cevapları artık siz kendi tablolarınıza uydurmak durumundasınız.

    Yöntem 1

    Insert query'nize Where şartı ekleyerek çözebilirsiniz. Sonrasında insert işlemi için 0 dönerse bilirsin ki yeterince stok yok.

    INSERT INTO Stok_Hareket .... WHERE {DusulecekStokMiktari} <= {MevcutStokMiktari}

    Burada mevcut stok miktarını da bu query içinde hesaplamalısınız, dışarıda hesaplayıp parametre olarak vermeyin, aksi durumda eş zamanlılık problemi oluşacaktır. Sub query ile çözebilirsiniz mesela.

    <= (select sum(girdi) - sum(cikti) from... ) gibi gibi... Tablo yapısını bilmediğimden sıkıyorum.

    Yöntem 2

    İlla C# tarafında çözmek isterseniz şu adımları izleyebilirsiniz.

    1. Transaction başlat
    2. Mevcut stok durumunu çek // sql
    3. Yapılmak istenen çıkış mevcut stoktan fazla ise kapat transaction'ı ve bas hatayı
    4. Yeterince stok varsa çıkış işlemini kaydet // sql
    5. Mevcut stok durumunu tekrar çek // sql
    6. Stok 0 dan küçük ise transaction'ı rollback et, bas hatayı
    7. Stok 0 veya büyük ise transactioni commit et


    www.cihanyakar.com



    11 Temmuz 2019 Perşembe 09:37
  • Yardımınız için çok teşekkür ederim :)
    11 Temmuz 2019 Perşembe 11:49