Sql ile stok işlemi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Sql ile stok işlemi

Mesaj gönderen pro_imaj »

Merhaba arkadaşlar.

yapmak istediğim.
bir ürünün giriş ve çıkışları var örn A ürünü
Bu A ürünü için girişlerden çıkışları çıkartıp sonucu A ürününü karşısına yazdırmak istiyorum.

Ben şunu yaptırabildim.
A ürünü giriş ve çıkışına bakmadan A ürünü ne kadar varsa topladım ve A ürününü karşısına sonucu yazdırdım.

Kod: Tümünü seç

SELECT SUM (Miktar) AS TopMiktar, IslemTur, MalKodu 
FROM FINSAT460.STI  
GROUP BY MalKodu, IslemTur


IslemTur =0 Giriş
IslemTur=1 Çıkış


Şöyle bişey olucak.
normal görünüm

IslemTuru           MalKodu             Miktar 
0                           A                     50 
1                           A                     20 
0                           B                     30 
1                           B                     10 
0                           C                     80 



Olmasını istediğim 
IslemTuru           MalKodu             Miktar 
0                           A                     30 
0                           B                     20 
0                           C                     80 
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Mesaj gönderen eyalin »

Bu semineri izlemenizi tavsiye ederim. :arrow:

http://www.delphiturkiye.net/Seminer8.rar
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

teşekkürler

Mesaj gönderen pro_imaj »

merhaba
bu linkini bir forunda daha görmüştüm ama indirme işleminde proplem olmuştu.

bu kez iniyor.

Ama sorunu halen çözemedim (Halen İzlemedim)

Saygılarımla
teşekkür ederim
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Mesaj gönderen eyalin »

Bu seminerde fahrettin bey procedure ve trigger kullanarak stok- cari veri tabanı hazırlıyor ben çok şey öğrendim bu seminerden.Qiuck time ile izlemeyi unutmayın.

kolay gelsin
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

merhaba

Mesaj gönderen pro_imaj »

Merhaba aşağıdaki kod1 ile kod ikiyi birbirinden çıkarıcam. baya uğraşmama rağmen olmadı

kod1
SELECT SUM (Miktar) AS TopMiktar, IslemTur, MalKodu
FROM FINSAT460.STI
WHERE IslemTur=1
GROUP BY MalKodu, IslemTur

(-)
kod2
SELECT SUM (Miktar) AS TopMiktar, IslemTur, MalKodu
FROM FINSAT460.STI
WHERE IslemTur=0
GROUP BY MalKodu, IslemTur

Bu kodları birbirinden çıkarmam gerek ama düzenleyemedim.
Teşekkür ederim
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kod: Tümünü seç

SELECT MalKodu,
(SELECT SUM (Miktar) FROM FINSAT460.STI F1 WHERE IslemTur=1 AND F1.MalKodu=F3.MalKodu)-(SELECT SUM (Miktar) FROM FINSAT460.STI F2 WHERE IslemTur=0 AND F2.MalKodu=F3.MalKodu)  AS TopMiktar
 FROM FINSAT460.STI F3
GROUP BY MalKodu,IslemTur
Bu şekil çalışır ama yavaş olur biraz.


Not: delphi ile ilgisi olmayan veritabanı soruları veritabanı bölümüne gönderiniz.
En son naile tarafından 09 Haz 2005 09:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Merhaba

Mesaj gönderen pro_imaj »

Merhaba Naile hanım.

Cevabınız ve uyarınız için teşekkür ederim.


Özür dilerim. :duvar:
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Merhaba

Mesaj gönderen pro_imaj »

Naile hanım yazmış olduğunuz kod hata vermiyor ama TopMiktar alanına Toplam miktarı yazmıyor hiçbişey yazmıyor.

enterprice manegerde denediğimde ise TopMiktar Alanını Null diye yazıyor tüm alanları.

Teşekkür ederim.
Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

halen çözemedim

Mesaj gönderen pro_imaj »

Merhaba
arkadaşlar ne yaptıysam olmuyor.

son olarak Stored procedure kullanmak gerek diye öğrendim ama onuda bilmiyorum.

Teşekkür ederim.
kolay gelsin
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Eğer fonksiyon kullanabiliyorsan:
(ms sql server için)

Kod: Tümünü seç

CREATE FUNCTION Toplam()
 RETURN FLOAT AS
BEGIN
DECLARE @T1 float,  @T2 float
SELECT @T1=ISNULL(SUM (Miktar),0)
FROM FINSAT460.STI
WHERE IslemTur=1
GROUP BY MalKodu, IslemTur

SELECT ISNULL(SUM (Miktar),0)
FROM FINSAT460.STI
WHERE IslemTur=0
GROUP BY MalKodu, IslemTur 

RETURN @T1-@T2
END
Eğer ms sql server 7 kullanıyorsan o user defined functionu desteklemiyor stored procedure kullanman lazım 2000 ise bunu bu şekil kullanabilirsin. Çağırak içinse;

Kod: Tümünü seç

SELECT Toplam
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

funtion kullanamıyorum

Mesaj gönderen pro_imaj »

function kullanamıyorum naile hanım.

ama Vievs ile olabileceğini öğrendim

ben 3 tane Vievs yazmam gerek. 2 sini yazdım 3. yazamıyorum

1 Vievs Stok Giriş

Kod: Tümünü seç

SELECT     SUM(Miktar) AS TopMiktar, IslemTur, MalKodu, Miktar, Fiyat, Tutar
FROM         FINSAT460.STI
WHERE     (IslemTur = 0)
GROUP BY MalKodu, IslemTur, Miktar, Fiyat, Tutar
2 Vievs Stok Çıkış

Kod: Tümünü seç

SELECT     SUM(Miktar) AS TopMiktar, MalKodu, IslemTur, Miktar, Fiyat, Tutar
FROM         FINSAT460.STI
WHERE     (IslemTur = 1)
GROUP BY MalKodu, IslemTur, Miktar, Fiyat, Tutar
yukarıdakiler tamam ama 3. Vievs

Kod: Tümünü seç


yukarıdaki iki Vievsi birbirinden çıkarmam gerek.
IslemTuru=1 -IslemTuru=0 olanları
teşekkür ederim

oyyy oyy ne zor işmi şu stok hesaplatmak
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Yukarıdaki sorgularda group by mal kodu yapman yeteri.Ayrıca sadece malkodu ve islemtoplami alanlarını seçtirmelisin.

Bakiyeyei bulmak içinse inner join li bir sql cümlesi kullanmalısın.

Sql de join olayını bi araştır.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

olmuyor

Mesaj gönderen pro_imaj »

olmuyor bir türlü olmuyor.

naile hanımın veridiği kodun çalıştığını lazio arkadaş belirtti ama boş kayıtlarda çalışmıyor dedi.

ben bir örnekle denedim ama olmuyor.

Sağlıcakla kalın arkadaşlar
ben bu gidişle pek kalamicam galiba.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

3. bir view oluşturmana gerek yok,şu cümle işini görür

Kod: Tümünü seç

SELECT View1.TopMiktar-View2.TopMiktar
FROM View1,View2
Where View1.MalKodu=View2.MalKodu
Bak okadar çözüm bulduk artık birini kullanarak hallet artık :)
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

teşekkür ederim

Mesaj gönderen pro_imaj »

Emeği geçen tüm arkadaşlara teşekkür ederim.

Hallettim gibi

Naile hanım verdiğiniz son kod ile oldu gibi

1.Vievs StokGiris
2.Vievs StokCikis

Kod: Tümünü seç

SELECT Stok_Cikis.TopMiktar-Stok_Giris.TopMiktar 
FROM Stok_Cikis,Stok_Giris 
Where Stok_Cikis.MalKodu = Stok_Giris.MalKodu
sadece
Nocolumn name diye bir alana
228.0000 gibi bişey yazdı.

ben artık bişeyler yapıp bunu tam halledicem.

sizi yormicam daha fazla
application.terminate :oops:
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Cevapla