Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: FIREBIRD MIZAN PROCEDURE  (Okunma sayısı 229 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı softdestek

  • Delphi 1 Level 4
  • ****
  • İleti: 35
  • Rep: +0/-0
FIREBIRD MIZAN PROCEDURE
« : 17 Ocak 2012 07:51:05 »
İki tane tablom var basit halleri şu şekilde
"HESAPKODLAR" tablosu yapısı aşağıda
HESAPKODU HESAPADI
100 Kasa hesabı
200 Banka hesabı
300 Gelirler hesabı

"HESAPLAR" tablosu yapısı aşağıdadır.
HESAPKODU BORC ALACAK
100 30 0
200 15 0
300 0 20
100 40 0
200 30 0

İstediğim şey şu Procedure hesapkodlarını sıra ile listeleyecek listelerkende hesaplar tablosundaki
borçlarıbulacak
SELECT HesapKodu, HesapAdi
FROM HesapKodlar
WHERE
(HesapKodlar.HesapKodu >= :PBasKod)
AND (HesapKodlar.Hesapkodu < :PBitKod)


ORDER BY HesapKodu
INTO: HESAPKODU, HESAPADI
do
SUSPEND;
end

Yukardaki procedure
select SUM(HESAPLAR.BORC), SUM(HESAPLAR.ALACAK)FROM HESAPLAR
where HESAPLAR.hesapkodu=:hesapkodu
INTO :BORC,:ALACAK;
ŞEKLİNDE BORC VE ALACAK toplamlarınıda eklemek istiyorum..

KISACASI HESAPKODLAR LİSTENİRKEN O HESABIN TOPLAM BORC VE ALACAĞI DA BULACAK PROCEDURE YAZMAM LAZIM..
TEŞEKKÜRLER..

NOT:
NOT:Aşağıda aynı işi  yapan bir  sql kodu yazdım fakat yavaş çalışıyor..

select
 HESAPKODLAR.hesapkodu,
(select SUM(HESAPLAR.BORC) FROM  hesaplar WHERE HESAPLAR.HESAPKODU=HESAPKODLAR.hesapkodu) AS  TOPLAMBORC,
(select SUM(HESAPLAR.ALACAK) FROM  hesaplar WHERE HESAPLAR.HESAPKODU=HESAPKODLAR.hesapkodu) AS TOPLAMALACAK
FROM   hesapkodlar
ORDER  BY hesapkodlar.HESAPKODU


« Son Düzenleme: 17 Ocak 2012 08:03:25 by softdestek »

Çevrimdışı sabanakman

  • Global Moderatör
  • *****
  • İleti: 796
  • Rep: +13/-0
  • Cinsiyet: Bay
  • Delphi Sürümü: e) Hepsi
Ynt: FIREBIRD MIZAN PROCEDURE
« Yanıtla #1 : 17 Ocak 2012 11:07:17 »
Böylesi kodlarda öncelikli olarak hesap toplamlarını elde ederek sonra join işlemleri ile o toplamları ilgili kayıtlara ilişkilendirmek en iyi çözüm olacaktır. Alt sorgu (sub query) FireBird içinde nasıl kullanılır bilemiyorum ama SQL Server üzerinden benzer çözüm
Kod:  (Unknown Language)
  1. select * from hesapkodlar as kod
  2. left join (select HESAPKODU, sum(BORC) as BORC, sum(ALACAK) as ALACAK from hesaplar) as toplam on kod.HESAPKODU=toplam.HESAPKODU
şeklinde olacaktır. Burada hesap kodlarına göre toplam hesaplandıktan sonra elde edilen toplamlar listesi hesap kodları üzerinden ilişkilendirilir. Group By ile yazılan alt sorgu FireBird üzerinden çalıştırılamazsa bunu bir View olarak yazıp, bu toplamlar View'ına join ile iliştirebilirsiniz.
« Son Düzenleme: 17 Ocak 2012 11:08:05 by sabanakman »
Şaban Şahin AKMAN

Derin olan kuyu değil kısa olan iptir