sql veritabanında sorguda toplama işlemi yaptırmama
Tarih
24/03/2011 14:05
Konu Sahibi
jossihvi11
Yorumlar
4
Okunma
4739
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



jossihvi11
Aktif Üye
Kullanici Avatari
Aktif Üye
69
15/07/2010
0
Isparta
Ofis 2007
29/11/2016,10:29
Çözüldü 
İ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 :

SQL Code
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.



Ek Dosyalar Ekran Görüntüleri
   
jossihvi11, 15-07-2010 tarihinden beri AccessTr.neT üyesidir.
Cevapla


Seruz
Uzman
Kullanici Avatari
Uzman
S.... U....
1.544
7
30/10/2008
804
Tekirdağ
Ofis XP
Bugün,15:18
Çözüldü 
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


jossihvi11
Aktif Üye
Kullanici Avatari
Aktif Üye
69
15/07/2010
0
Isparta
Ofis 2007
29/11/2016,10:29
Çözüldü 
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 :

SQL Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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


Seruz
Uzman
Kullanici Avatari
Uzman
S.... U....
1.544
7
30/10/2008
804
Tekirdağ
Ofis XP
Bugün,15:18
Çözüldü 
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.

SQL Code
  (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


jossihvi11
Aktif Üye
Kullanici Avatari
Aktif Üye
69
15/07/2010
0
Isparta
Ofis 2007
29/11/2016,10:29
Çözüldü 
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







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
  SQL Server da Yedekleme İşlemi (BACK UP) arzuu 4 2.024 15/10/2009, 20:00 benremix


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya