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. Yandex Disk

Eyvallah..
Cevapla
#2
Selamlar,
Kullanmış olduğunuz SQL kodunu da paylaşabilir misiniz?
Yazılımcı, kahveyi koda çeviren bir organizmadır.
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;

http://www.delphican.com/showthread.php?tid=2078
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
WWW
Cevapla
#5
(10-09-2019, Saat: 12:12)wiseman Adlı Kullanıcıdan Alıntı: 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. Yandex Disk

Eyvallah..
Cevapla
#6
@Aktolgali Zamanında SQL için bişeyler karalamıştım beliki fikir verebilir
http://www.delphican.com/showthread.php?...C3%BClatif
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ı: @Aktolgali Zamanında SQL için bişeyler karalamıştım beliki fikir verebilir
http://www.delphican.com/showthread.php?...C3%BClatif

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. Yandex Disk

Eyvallah..
Cevapla
#8
(10-09-2019, Saat: 14:01)uparlayan Adlı Kullanıcıdan Alıntı: Aşağıdaki konuyu incelemenizi öneririm;

http://www.delphican.com/showthread.php?tid=2078

(10-09-2019, Saat: 21:44)Aktolgali Adlı Kullanıcıdan Alıntı:
(10-09-2019, Saat: 15:07)adelphiforumz Adlı Kullanıcıdan Alıntı: @Aktolgali Zamanında SQL için bişeyler karalamıştım beliki fikir verebilir
http://www.delphican.com/showthread.php?...C3%BClatif

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.
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
WWW
Cevapla
#9
(10-09-2019, Saat: 21:50)uparlayan Adlı Kullanıcıdan Alıntı:
(10-09-2019, Saat: 14:01)uparlayan Adlı Kullanıcıdan Alıntı: Aşağıdaki konuyu incelemenizi öneririm;

http://www.delphican.com/showthread.php?tid=2078

(10-09-2019, Saat: 21:44)Aktolgali Adlı Kullanıcıdan Alıntı: 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ı. 

https://www.ucuzkitapal.com/delphi-2007-...ayincilik/
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ı:
(10-09-2019, Saat: 14:01)uparlayan Adlı Kullanıcıdan Alıntı: Aşağıdaki konuyu incelemenizi öneririm;

http://www.delphican.com/showthread.php?tid=2078

(10-09-2019, Saat: 21:44)Aktolgali Adlı Kullanıcıdan Alıntı: 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ı:
(10-09-2019, Saat: 21:50)uparlayan Adlı Kullanıcıdan Alıntı: @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ı. 

https://www.ucuzkitapal.com/delphi-2007-...ayincilik/
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. Yandex Disk

Eyvallah..
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi