Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Yürüyen bakiye
#1
Arkadaşlar merhaba;
Bir türlü beceremediğim bir şeye çare arıyorum, YÜRÜYEN BAKİYE

Benim 5 tablom var.
1- tbl_cari (cr_id, cr_unvan)
2- tbl_tahsilat (th_id, th_crid, th_tarih, th_tutar)
3- tbl_odeme (od_id, od_crid, od_tarih, od_tutar)
4- tbl_satis (sts_id, sts_crid, sts_tarih, sts_tutar)
5- tbl_alis (als_id, als_crid, als_tarih, als_tutar)

Bu tablolardan bir view oluşturup bakiyeyi satır satır görmek istiyorum. boreas'ın bu konuyla ilgili bir başlığı var (başka bir sürü daha) ama çok acemi olmamama rağmen bir türlü doğru sonuç verdiremedim. Her defasında ya korelasyon yaparak sonuç veriyor 5-6 bin kayıt 10-12 milyon olarak dönüyor ya da saçma sapan bir sürü kayıt oluşuyor.

Ufacık bir örnek program verebilecek olana minnettar olacağım.
Dosyalarınızı kendi bulutunuza yedekleyin. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Eyvallah..
Cevapla
#2
Selamlar,
Kullanmış olduğunuz SQL kodunu da paylaşabilir misiniz?
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#3
MySql de kullandığım bir örnek. Kendinize göre düzenleyin. Bu bir tek tablo üzerinden yapılmıştır.

sqlStr:='SET @stl=0; '+
'SELECT *, concat(Format(kasahrk_tutar,2),'+QuotedStr(' ')+',kasahrk_dovizturu) as GENELTOPLAM,'+
'if(kasahrk_turu='+QuotedStr('Giren')+',kasahrk_tutar*kasahrk_doviz,0) AS GenelIn,'+
'if(kasahrk_turu='+QuotedStr('Cikan')+',kasahrk_tutar*kasahrk_doviz,0) AS GenelOut,'+
'CAST(@stl:=(@stl+if(kasahrk_turu='+QuotedStr('Giren')+',kasahrk_tutar*kasahrk_doviz,-kasahrk_tutar*kasahrk_doviz)) AS DECIMAL(11,2)) AS Bakiye,'+
'if(kasahrk_turu='+QuotedStr('Giren')+' and kasahrk_dovizturu='+QuotedStr('TL')+',kasahrk_tutar,0) AS TLIn,'+
'if(kasahrk_turu='+QuotedStr('Cikan')+' and kasahrk_dovizturu='+QuotedStr('TL')+',kasahrk_tutar,0) AS TLOut '+
'FROM kasahrk ';

Buda Dövizli başka bir örnek

SET @stl=0; SET @usd=0;SET @eur=0;
SELECT *,
CAST(@stl:=(@stl+if(amount_type='Borc',if(currency='TL',total,0),if(currency='TL',-total,0))) AS DECIMAL(11,2)) AS TLBakiye,
CAST(@usd:=(@usd+if(amount_type='Borc',if(currency='USD',total,0),if(currency='USD',-total,0))) AS DECIMAL(11,2)) AS USDBakiye,
CAST(@eur:=(@eur+if(amount_type='Borc',if(currency='EUR',total,0),if(currency='EUR',-total,0))) AS DECIMAL(11,2)) AS EURBakiye
FROM inoutaccounts
Cevapla
#4
Aşağıdaki konuyu incelemenizi öneririm;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
P.Safa:Yaşlanarak değil, yaşayarak tecrübe kazanılır.Zaman insanları değil,armutları olgunlaştırır
C.Yücel:Toprak gibi olmalısın! Ezildikçe sertleşmelisin!Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı
S.Canan:Bildiğini zannettiğin an hiç bir şey öğrenemezsin
Bilgi uçar
WWW
Cevapla
#5
(10-09-2019, Saat: 12:12)wiseman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Selamlar,
Kullanmış olduğunuz SQL kodunu da paylaşabilir misiniz?

CREATE VIEW YURUYEN(
    CARI,
    ALISCRID,
    TARIH,
    TUTAR,
    ODCRID,
    ODEMETARIH,
    ODENEN,
    THCRID,
    TAHSILATTARIH,
    TAHSILAT)
AS
select tbl_cari.cr_id,
        TBL_ALIS.als_crid,
        TBL_ALIS.als_tarih,
        TBL_ALIS.als_tutar,
        tbl_odeme.od_crid,
        tbl_odeme.od_tarih,
        tbl_odeme.od_tutar,
        tbl_tahsilat.th_crid,
        tbl_tahsilat.th_tarih,
        tbl_tahsilat.th_tutar

from tbl_cari, TBL_ALIS, tbl_odeme, tbl_tahsilat

/*inner join TBL_ALIS on TBL_ALIS.als_crid = tbl_cari.cr_id
join tbl_tahsilat on tbl_tahsilat.th_crid=tbl_cari.cr_id
join tbl_odeme on tbl_odeme.od_crid=tbl_cari.cr_id*/
;

Görüntü aşağıdaki gibi

ohUetq.png

Bunu yaptım aldığım sonuç doğru değildi daha sonra

CREATE VIEW YURUYEN1(cariid, odcariid, odtarih, odtutar, thtarih, thtutar)
AS
select  c.cr_id, o.od_crid, o.od_tarih, o.od_tutar, t.th_tarih, t.th_tutar

from tbl_cari c, tbl_tahsilat t

JOIN tbl_odeme o ON C.cr_id=o.od_crid

where o.od_tarih = t.th_tarih  and C.cr_id=o.od_crid
order by o.od_tarih, c.cr_id
;

alınan görüntü bu

ohU49y.png
Dosyalarınızı kendi bulutunuza yedekleyin. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Eyvallah..
Cevapla
#6
@Aktolgali Zamanında SQL için bişeyler karalamıştım beliki fikir verebilir
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#7
(10-09-2019, Saat: 15:07)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@Aktolgali Zamanında SQL için bişeyler karalamıştım beliki fikir verebilir
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

adelphiforumz Teşekkür ederim ama olayın mantığını hâlâ çözemedim dolayısıyla kodda bir işime yaramıyor. Küçükte ola bir program istememin sebebi bu.
Dosyalarınızı kendi bulutunuza yedekleyin. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Eyvallah..
Cevapla
#8
(10-09-2019, Saat: 14:01)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Aşağıdaki konuyu incelemenizi öneririm;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

(10-09-2019, Saat: 21:44)Aktolgali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(10-09-2019, Saat: 15:07)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@Aktolgali Zamanında SQL için bişeyler karalamıştım beliki fikir verebilir
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

adelphiforumz Teşekkür ederim ama olayın mantığını hâlâ çözemedim dolayısıyla kodda bir işime yaramıyor. Küçükte ola bir program istememin sebebi bu.

@Aktolgali  Yukarıdaki paylaşımda zaten olayın mantığı anlatılıyor. Siz okumaktan imtina ediyorsanız soru sormanızın da bir anlamı yok.
P.Safa:Yaşlanarak değil, yaşayarak tecrübe kazanılır.Zaman insanları değil,armutları olgunlaştırır
C.Yücel:Toprak gibi olmalısın! Ezildikçe sertleşmelisin!Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı
S.Canan:Bildiğini zannettiğin an hiç bir şey öğrenemezsin
Bilgi uçar
WWW
Cevapla
#9
(10-09-2019, Saat: 21:50)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(10-09-2019, Saat: 14:01)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Aşağıdaki konuyu incelemenizi öneririm;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

(10-09-2019, Saat: 21:44)Aktolgali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.adelphiforumz Teşekkür ederim ama olayın mantığını hâlâ çözemedim dolayısıyla kodda bir işime yaramıyor. Küçükte ola bir program istememin sebebi bu.

@Aktolgali  Yukarıdaki paylaşımda zaten olayın mantığı anlatılıyor. Siz okumaktan imtina ediyorsanız soru sormanızın da bir anlamı yok.

Kendi kullandığım kod;
#bky değişkeni sorgudan önce sıfırlanmalı. 

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
bu kitabı bulurda alırsan mantığınıda anlarsın.

SELECT
 ID,
  KAYIT_NO,
  BORC,ALACAK,CARI_GENEL.KOD,musteri.firma,iddoviz,CARI_GENEL.islem_tarihi,  CARI_GENEL.ACIKLAMA,
(EXTRACT (DAY from  TARIH) || '.' ||
 EXTRACT (month from  TARIH) || '.' ||
 EXTRACT (year from  TARIH) ) TARIH,

  CAST(rdb$get_context( 'USER_TRANSACTION', 'bky#')AS NUMERIC(10,2) ) as ROW_NUMBER,  
  rdb$set_context('USER_TRANSACTION','bky#' ,
 coalesce(cast(rdb$get_context('USER_TRANSACTION' , 'bky#') AS NUMERIC(10,2)), 0) +   BORC - ALACAK)
from
  CARI_GENEL   
left join  musteri on (musteri.KOD = CARI_GENEL.kod)

ORDER BY  CARI_GENEL.TARIH
Topluluk mopluluk yok :/
Cevapla
#10
(10-09-2019, Saat: 21:50)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(10-09-2019, Saat: 14:01)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Aşağıdaki konuyu incelemenizi öneririm;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

(10-09-2019, Saat: 21:44)Aktolgali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.adelphiforumz Teşekkür ederim ama olayın mantığını hâlâ çözemedim dolayısıyla kodda bir işime yaramıyor. Küçükte ola bir program istememin sebebi bu.

@Aktolgali  Yukarıdaki paylaşımda zaten olayın mantığı anlatılıyor. Siz okumaktan imtina ediyorsanız soru sormanızın da bir anlamı yok.

uparlayan yukarıda olayın mantığının anlatıldığını görüyorum da siz benim dediğimi anlamamışsınız demekki, dediğim şu "ben hâlâ anlayamadım, çözemedim" dedim. Bunun okumaktan imtinayla ilgisi yok.


Siz okuduğunuz herşeyi bir defa da kavrıyor olabilirsiniz ama bu dünya da benim gibi bir örnekle, beş örnekle kavrayamayan insanlar olduğunu da kabul etmelisiniz. Yine de ilginiz için teşekkür ederim. Sizin cevap vermenize gerek yok.

(10-09-2019, Saat: 22:01)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(10-09-2019, Saat: 21:50)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@Aktolgali  Yukarıdaki paylaşımda zaten olayın mantığı anlatılıyor. Siz okumaktan imtina ediyorsanız soru sormanızın da bir anlamı yok.

Kendi kullandığım kod;
#bky değişkeni sorgudan önce sıfırlanmalı. 

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
bu kitabı bulurda alırsan mantığınıda anlarsın.

SELECT
 ID,
  KAYIT_NO,
  BORC,ALACAK,CARI_GENEL.KOD,musteri.firma,iddoviz,CARI_GENEL.islem_tarihi,  CARI_GENEL.ACIKLAMA,
(EXTRACT (DAY from  TARIH) || '.' ||
 EXTRACT (month from  TARIH) || '.' ||
 EXTRACT (year from  TARIH) ) TARIH,

  CAST(rdb$get_context( 'USER_TRANSACTION', 'bky#')AS NUMERIC(10,2) ) as ROW_NUMBER,  
  rdb$set_context('USER_TRANSACTION','bky#' ,
 coalesce(cast(rdb$get_context('USER_TRANSACTION' , 'bky#') AS NUMERIC(10,2)), 0) +   BORC - ALACAK)
from
  CARI_GENEL   
left join  musteri on (musteri.KOD = CARI_GENEL.kod)

ORDER BY  CARI_GENEL.TARIH

teşekkür ederim boreas hemen kitabı temin edeceğim.
Dosyalarınızı kendi bulutunuza yedekleyin. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Eyvallah..
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi