Forum

Bildirimler
Hepsini Temizle

Döngü ve aynı kayıtları toplama

Ahmet TONBAKLAR
(@AhmetTONBAKLAR)
Üye

Merhaba Arkadaşlar,

gruplama ve toplama ilgili yardımlarınıza ihtiyacım var.

Öncelikle ana ürüne alt reçeteler oluşturdum. Sipariş verilen ana ürün için alt ürün kadar üretim emri verilmesi gerekiyor. Ben döngüden kaçtane ana sipariş olduğunu görebiliyorum. Kaç adette ana siparişin reçete(alt siparişi) olabildiğini görebiliyorum). Aynı alt ürün birden fazla ana üründe kullanılabiliyor. Listeme yaparken aynı olan ürünleri tek kayıta düşürüp miktarınlarını toplamını aldırmak istiyorum. 

 

stk sta id
1 ana ürün 100
2 ana ürün 2 200

 

id stk sta gelenid adet
1 10 alt ürün 1 100 2
2 20 alt ürün 2 100 1
3 10 alt ürün 1 200 3
4 30 alt ürün 3 100 2
5 20 alt ürün 2 200 1

 

Set uretim3 = conn.Execute("SELECT REF,STOKREF,STK,STA,MIKTAR from recete where ID='"&ID&"'")

Sipariş formunda 2 ana ürün var. "ana ürün" ve "ana ürün 2"  de hem "1" ve "3" numaralı da kullanılmış. (üretim emri yazdırınca aynı alt üründen birden fazla yazmakta. Hem yanlış toplamayı önlemek hemde işi hızlandırmak için)

Ayrı ayrı yazılması yerine tek kayıt olarak gösterilip genel toplamının 5 olarak yazdırmak istiyorum.

SUM ve group by ile birkaç örnek yaptım 1 adet sipariş olunca zaten alt ürünler 2 kere yazılamayacağından sorun olmuyor. Fakat sipariş adeti artınca listemede tüm ürünleri gösterip tek kayıt indirmiyor ve toplama yapmıyor. 

Lütfen konuyla ilgili yardımcı olabilirmisiniz.

 

 

 

 

 

 

 

 

 

 

Alıntı
Konu başlatıcı Gönderildi : 07/11/2016 18:04
Mücahit Yılmaz
(@mucahityilmaz)
Üye

sqlle epeydir uğraşmıyorum o yüzden tam anlamıyla yardımcı olamayacağım ama distinct komutunu araştırın hocam ilacınız o 

CevapAlıntı
Gönderildi : 07/11/2016 19:11
Burak Şentürk
(@BurakSenturk)
Üye

Selam,

Biraz geç oldu ancak, benim anladığım sen group by kullanıyorsun ancak ana malzemenide grup içine dahil ettiğinden sana alt malzeme toplamını ana malzeme bazında veriyor buda bir alt malzemeden birden fazla gözükmesine neden oluyor.

Bu durumda yapılacak şey group by kısmını sadece alt malzeme ile yapacaksın, böylelikle ana malzemeden bağımsız olarak üretilecek tüm alt ürünleri sum layıp karşına getiricek tablon bu olacak ;

id stk sta adet
1 10 alt ürün 1 5
2 20 alt ürün 2 1
4 30 alt ürün 3 2
5 20 alt ürün 2 1

diğer türlü gelmesi zaten mantıksız. He ayrı bir tablo yapıp stok hareketlerinide orada tutarsın, böylelikle hangi ürüne hangi alt üründen ne kadar gitmişi oradan yakalarsın. Yani seni istediğin kısımı tek tabloda çözmek çokta mantıklı ve kullanışlı olmaz.

 

Umarım işine yarar,

İyi Günler Dilerim,

CevapAlıntı
Gönderildi : 09/11/2016 14:23
Ahmet TONBAKLAR
(@AhmetTONBAKLAR)
Üye

Merhabalar,

 

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

Muhasebe programı hazır olduğundan tabloları değiştiremiyorum ; stokgen,stokrecetesi,siparis tablolaları var. 

ürüne reçete eklediğim zaman ürün id ile stokrecetesinie kayıt ediyor. Sipariş oluşturduğum zaman stokgen tablosundaki ürünleri seçip  siparis tablosuna kayıt ediyor. siparis için kullanılacak reçeteleride şöyle çağırıyorum. ürün id stokrecetesindeki id ile uyusuyorsa reçete listeme sağlanıyor. 

aslında tek veya birden fazla ürün id geldiğinde liste aynı stok ürünleriyle uzayıp gidiyor. bende döngüdeki değeleri or kullanarak tek listeylemiş gibi gösterip aynı listeleri toplatmak istiyorum.


 <input type="checkbox" name="deger" value="<%=uretim("STOKP_ID" ) %>" checked>

 

For k = 1 To request.form("deger").Count

stokdeger=request.form("deger")(K)
gelenurunadi=request.form("sta")(K)
sipmaktartotal=request.form("sipmiktar")(K)

if stokdeger<> "" then
degisen = "STOKP_ID ='"& stokdeger &"'"
response.write(degisen& "<br>")
end if

if degisen <> "" then
ara = " OR "
end if

Set uretim3 = conn.Execute("SELECT DISTINCT STK,STA, SUM(MIKTAR) AS total from TSTOKRECETESI where "&degisen&" "&ara&" "&degisen&" GROUP BY STK,STA")

yukarıdaki detayda gelen deger (ürün id kadar) select where kullanıp listeleri toplatmak..

 


 

Aşağıdaki management açık hali var burada çalışıyor. döngüdekileri verileri aldırıyorum fakat sorguda kullandıramıyorum. 

Set uretim35 = conn.Execute("SELECT DISTINCT STK,STA, SUM(MIKTAR) AS total from TSTOKRECETESI where STOKP_ID = '2009_17156_3' OR STOKP_ID ='2010_14930_9856' GROUP BY STK,STA")

 

 

CevapAlıntı
Konu başlatıcı Gönderildi : 09/11/2016 14:42
Volkan Alkılıç
(@volkanalkilic)
Üye

İnceleyiniz;

DECLARE @p0 DateTime = '2016-11-13 1200.000'

SELECT SUM([t0].[FiiliMiktar]) AS [Toplam]
FROM [SatışFaturasıDetay] AS [t0]
LEFT OUTER JOIN [SatışFaturası] AS [t1] ON [t1].[ID] = [t0].[BaseReferance]
LEFT OUTER JOIN [ÜrünHizmet] AS [t2] ON [t2].[ID] = [t0].[ÜrünHizmet]
WHERE ([t1].[KayıtTarihi]) > @p0
GROUP BY [t2].[Kodu]

CevapAlıntı
Gönderildi : 13/12/2016 15:03
Paylaş: