(Dün, 10:32)atoykan yazdı:yapmak istediğiniz sorgu. Şöyle açıklayayım:SELECT k.ID,k.MusteriKod,k.MusteriAdi,k.Telefon,k.Giris,k.Cikis,k.Bakiye,
Nz((SELECT SUM(s.Tutar) FROM tbl_Sales AS s WHERE s.MusteriKod = k.MusteriKod),0) AS ToplaTutar,
Nz((SELECT SUM(c.Tutar) FROM tbl_CasheMoves AS c WHERE c.CariKod = k.MusteriKod),0) AS NakitTahsilat
FROM qry_BankCustom AS k;
qry_BankCustom ana kaynağınız, AS k ile ona kısa bir isim vermek pratiklik için, alanlara erişmek için k.ilgili alan yazmak kaynak tablo adını uzun uzun yazmaktan daha kolaydır. Buna göre qry_BankCustom içindeki her müşteri için bir satır döner. NZ alt sorgusu kısmında ise tbl_Sales tablosundan k.MusteriKod ile eşleşen kayıtlar için Tutar toplamını (SUM) alıyoruz çünkü WHERE s.MusteriKod = k.MusteriKod ana kaynağın k.MusteriKod değerine bağımlı. Buna korelasyonlu alt sorgu denir. Mantık olarak x müşterisi için tbl_Salesdeki toplam satış tutarı nedir sorusunu cevaplar.
Şayet Excele export etmek gibi işlemler uygulayacaksanız bu durumda NZ alt sorgularını
IFF yapısına dönüştürmek gerekir.IIf(IsNull((SELECT SUM(s.Tutar) FROM tbl_Sales AS s WHERE s.MusteriKod = k.MusteriKod)), 0, (SELECT SUM(s.Tutar) FROM tbl_Sales AS s WHERE s.MusteriKod = k.MusteriKod)) AS ToplaTutar,
IIf(IsNull((SELECT SUM(c.Tutar) FROM tbl_CasheMoves AS c WHERE c.CariKod = k.MusteriKod)), 0, (SELECT SUM(c.Tutar) FROM tbl_CasheMoves AS c WHERE c.CariKod = k.MusteriKod)) AS NakitTahsilat
Sorgulara daha çok çalışmalısınız. Hala mantık hataları yapıyorsunuz, bu moralinizi bozmasın öğrenme aşamasında hata yapmak normaldir ve hata yapmak pratik olarak öğrenmenizi sağlar.
Çok teşekkür ederim.
iyi ki varsınız!!
sağ olun, var olun ...
(Dün, 09:33)onur_can yazdı: Sorgunuzun en sonunda bulunan NakitTahsilat: Tutar alanının Toplam satırını İlk olarak değiştirin.
Çok teşekkür ederim Onur Hocam.
iyi çalışmalar dilerim.