Skip to main content

AccessTr.neT


sql veritabanında sorguda toplama işlemi yaptırmama

jossihvi11
jossihvi11
SQL
4
9091

sql veritabanında sorguda toplama işlemi yaptırmama

Çözüldü #1
İyi günler,

Uzak masaüstü bağlantısı kullandığım Sql veritabanında mevcut bir sorgu komutunu değiştirmek istiyorum.
Mevcut sorgu komutu :
ISNULL((Select Sum(TS.MIKTAR) From TAHSIS TS Where TS.ORDERNO = T.ORDERNO And TS.MODEL = T.MODEL And TS.RNK1 = T.RNK1 And TS.RNK2 = T.RNK2 And TS.TIP <= '29'), 0)

Burada yapılan toplama işlemini iptal etmek istiyorum. Bunun için "sum" komutunu sildiğimde komut :
ISNULL((Select TS.MIKTAR From TAHSIS TS Where TS.ORDERNO = T.ORDERNO And TS.MODEL = T.MODEL And TS.RNK1 = T.RNK1 And TS.RNK2 = T.RNK2 And TS.TIP <= '29'), 0)

yaptığım zaman ekte ki hata mesajını veriyor. Sql komutlarını hiç bilmediğim için bu toplama işlemi yapmadan verileri çekebilmek için yazmam gereken komut nedir?

Not: Uzak masaüstü bağlantısı ile kullanılan bir program olduğu için maalesef örnek ekleyemiyorum.
jossihvi11, 15-07-2010 tarihinden beri AccessTr.neT üyesidir.
Son Düzenleme: 24/03/2011, 14:06, Düzenleyen: jossihvi11.
Cevapla
Çözüldü #2
Hata mesajında birden fazla kayıt veya sonuç döndürüldüğünü söylüyor.

Yani ilk sorgu ile siz toplam aldırdığınızda sadece bir adet (toplam TS.MIKTAR) sonuç değeri dönüyor. (Mesela 2348 değeri)

2. sorgu ile ise birden fazla kayıt dönüyor (kaç tane kayır ise o kadar miktar değeri) ve program bunu nasıl değerlendireceğini bilemiyor.
Mesela (2,5,6,4,7,9,5,6,6,......)

Sizin bu sorgu sonucunu nerede kullandığınız önemli.
Bir textbox'a bu değeri atmaya çalışıyorsanız tabii ki olmaz.
Ama bir liste kutusuna veya datagrid'e aktarabilirsiniz.
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #3
evet seruz hocam söylediğiniz gibi birden fazla sonuç bulduğu için sorun çıkartıyordu. Bende kritere eklendi yaptım böylece sonuçları doğru şekilde alabildim. Fakat bu iki sorgu sonucuna işlem (toplama, çıkarma) gibi işlemleri yazamıyorum. Daha açıklayıcı olmak için ;

SQL Cümlesi :

Select O.ORDERNO As 'ORDER', (Select Max(M.ADI) From MAL M
Where M.KOD = T.MAL) As 'KUMAŞ CİNSİ', T.RNK1 As 'RENK KODU',
(Select Max(R.ADI) From RENK R
Where R.KOD = T.RNK1) As 'RENK ADI', ISNULL((Select Sum(TS.MIKTAR)
From TAHSIS TS
Where TS.ORDERNO = T.ORDERNO And TS.MODEL = T.MODEL And TS.MKOD = T.MAL And
TS.RNK1 = T.RNK1 And TS.RNK2 = T.RNK2 And
TS.TIP <= '29'), 0) As ['GİREN KG.'], ISNULL((Select Sum(TS.MIKTAR)
From TAHSIS TS
Where TS.ORDERNO = T.ORDERNO And TS.MODEL = T.MODEL And TS.MKOD = T.MAL And
TS.RNK1 = T.RNK1 And TS.RNK2 = T.RNK2 And
TS.TIP >= '30'), 0) As ['ÇIKAN KG.'], (Select Max(M.ADI) From MODEL M
Where M.KOD = T.MODEL) As 'MODEL ADI', O.ISTAR As 'TERMİN TAR.',
datepart(wk, O.ISTAR) As 'HAFTA'
Order By O.ISTAR

Bu Sql cümlesindeki [ÇIKAN KG] olarak tanımlanan sütundan [GİREN KG] olarak tanımlanan sütunları birbirinden ayırmak için kullanmam gereken Sql komutunu nedir
jossihvi11, 15-07-2010 tarihinden beri AccessTr.neT üyesidir.
Cevapla
Çözüldü #4
Birbirinden ayırmak derken neyi kastettiğinizi tam anlamadım, çünkü script'te bunlar zaten ayrı alanlar olarak tanımlanmış.
Ancak Giren - Çıkan = Bakiye gibi yapmak için aşağıdaki şekilde kullanabilirsiniz.

  (ISNULL((Select Sum(TS.MIKTAR) From TAHSIS TS Where TS.ORDERNO = T.ORDERNO And TS.MODEL = T.MODEL And TS.MKOD = T.MAL And
TS.RNK1 = T.RNK1 And TS.RNK2 = T.RNK2 And TS.TIP <= '29'), 0) -
ISNULL((Select Sum(TS.MIKTAR) From TAHSIS TS Where TS.ORDERNO = T.ORDERNO And TS.MODEL = T.MODEL And TS.MKOD = T.MAL And
TS.RNK1 = T.RNK1 And TS.RNK2 = T.RNK2 And TS.TIP >= '30'), 0) ) As ['BAKİYE KG.'],

Tabii deneyip test etme şansımız yok ancak mantık olarak şu şekilde:
"Giren KG" ve "Çıkan KG" alan hesaplarını alıp, as ile isim vermeden,
Parantez içine alıp aralarına - konularak çıkan sonuca as ile Bakiye ismi verilecek.
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #5
Evet hocam söylediğiniz gibi komutları yazdım ve istediğim oldu sonsuz teşekkür ederim yardımlarınız için.
jossihvi11, 15-07-2010 tarihinden beri AccessTr.neT üyesidir.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task