üç tablo birlesimi
Nereden Yazdırıldığı: ERP Nedir? | Türkiye'nin ERP Forum Platformu
Kategori: SQL
Forum Adı: SQL Veri Tabanı İşlemleri
Forum Tanımlaması: Table,View,Trigger,SELECT,UPDATE,INSERT...
URL: http://www.erpne.org/forum_posts.asp?TID=2112
Tarih: 22 Ağustos 2025 Saat 15:11 Program Versiyonu: Web Wiz Forums 11.10 - http://www.webwizforums.com
Konu: üç tablo birlesimi
Mesajı Yazan: kıl_ark
Konu: üç tablo birlesimi
Mesaj Tarihi: 14 Mayıs 2010 Saat 18:47
merhaba
excel de query araciligi ile grup toplamli bir mizan hazirliyorum
tblmugrup , tblmuplan ve tblmuhfis tablolarini kullaniyorum
sorunum birlestirme yaparken tblmugrup tüm degerleri ile birlessin istiyorum
1
10
100
100-01 gibi siralasin istiyorum
fakat dis birlesimlerde üç tabo birlesimi varsa tüm degerler birlesimi yapmiyor.
ilk kullandigim cümle
SELECT TBLMUPLAN.HS_GRKOD,TBLMUGRUP.GRUP_ISIM, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak FROM TBLMUHFIS TBLMUHFIS, TBLMUPLAN TBLMUPLAN,TBLMUGRUP TBLMUGRUP WHERE TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD AND TBLMUPLAN.HS_GRKOD = TBLMUGRUP.GRUP_KOD group by TBLMUPLAN.HS_GRKOD,TBLMUGRUP.GRUP_ISIM
union all SELECT TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak FROM TBLMUHFIS TBLMUHFIS, TBLMUPLAN TBLMUPLAN,TBLMUGRUP TBLMUGRUP WHERE TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD AND TBLMUPLAN.HS_GRKOD = TBLMUGRUP.GRUP_KOD group by TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI
order by TBLMUPLAN.HS_GRKOD
seklinde
bu cümlenin sonucunda
10
100-01 çikiyor
en üstteki 1 ve aradaki 100 çikmiyor.
yardimlarinizi bekliyorum
|
Cevaplar:
Mesajı Yazan: Conari
Mesaj Tarihi: 17 Mayıs 2010 Saat 08:59
MUGRUP a LEFT OUTER JOIN ile baglan.
ve hesap kodu ile grup kodlarini uzunluguna göre esitle.
MUGRUP.GRUP_KOD=SUBSTRING(TBLMUHFIS.HESAP_KODU,1,LEN(MUGRUP.GRUP_KOD))
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 17 Mayıs 2010 Saat 09:27
cümle içerisine nasil ilave edecegimi bilemedim yardimci olurmusunuz
|
Mesajı Yazan: Conari
Mesaj Tarihi: 17 Mayıs 2010 Saat 16:50
bu tek sql ile olucak bir is degil. SP yazmak lazim.
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: rifatgunduz
Mesaj Tarihi: 17 Mayıs 2010 Saat 19:11
Selam,
Tek bir viewda da yapilabilir. Isterseniz siz bana hesap plani seviyenizi söyleyin. Ona göre kodlayayim. Yada asagidakine bakarak siz düzenleyin.
Örnek Planda kullanilan hesap plani seviyesi 3-2-2-4'dür.
Iyi Çalismalar...
---------------X
SELECT C.GRUP_KOD,
C .GRUP_ISIM,
sum(case when A.BA='1' then A.TUTAR else 0 end) as bor,
sum(case when A.BA='2' then A.TUTAR else 0 end) as alacak
FROM TBLMUHFIS A
INNER JOIN TBLMUGRUP C ON LEFT(A.HES_KOD,1) = C.GRUP_KOD
group by C.GRUP_KOD,C.GRUP_ISIM
UNION ALL
---------------XX
SELECT C.GRUP_KOD,
C .GRUP_ISIM,
sum(case when A.BA='1' then A.TUTAR else 0 end) as bor,
sum(case when A.BA='2' then A.TUTAR else 0 end) as alacak
FROM TBLMUHFIS A
INNER JOIN TBLMUGRUP C ON LEFT(A.HES_KOD,2) = C.GRUP_KOD
group by C.GRUP_KOD,C.GRUP_ISIM
UNION ALL
---------------XXX
SELECT B.HESAP_KODU,
B .HS_ADI,
sum(case when A.BA='1' then A.TUTAR else 0 end) as bor,
sum(case when A.BA='2' then A.TUTAR else 0 end) as alacak
FROM TBLMUHFIS A
INNER JOIN TBLMUPLAN B ON LEFT(A.HES_KOD,3)= B.HESAP_KODU
GROUP BY B.HESAP_KODU,
B .HS_ADI
UNION ALL
---------------XXX-YY
SELECT B.HESAP_KODU,
B .HS_ADI,
sum(case when A.BA='1' then A.TUTAR else 0 end) as bor,
sum(case when A.BA='2' then A.TUTAR else 0 end) as alacak
FROM TBLMUHFIS A
INNER JOIN TBLMUPLAN B ON LEFT(A.HES_KOD,6)= B.HESAP_KODU
GROUP BY B.HESAP_KODU,
B .HS_ADI
UNION ALL
---------------XXX-YY-ZZ
SELECT B.HESAP_KODU,
B .HS_ADI,
sum(case when A.BA='1' then A.TUTAR else 0 end) as bor,
sum(case when A.BA='2' then A.TUTAR else 0 end) as alacak
FROM TBLMUHFIS A
INNER JOIN TBLMUPLAN B ON LEFT(A.HES_KOD,9)= B.HESAP_KODU
GROUP BY B.HESAP_KODU,
B .HS_ADI
UNION ALL
---------------XXX-YY-ZZ-YYYY
SELECT B.HESAP_KODU,
B .HS_ADI,
sum(case when A.BA='1' then A.TUTAR else 0 end) as bor,
sum(case when A.BA='2' then A.TUTAR else 0 end) as alacak
FROM TBLMUHFIS A
INNER JOIN TBLMUPLAN B ON A.HES_KOD= B.HESAP_KODU
GROUP BY B.HESAP_KODU,
B .HS_ADI
ORDER BY C.GRUP_KOD
------------- Rifat Gündüz
www.netsis.com.tr
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 17 Mayıs 2010 Saat 19:46
tekrar merhaba
asagidaki cümle ile x ve xx gruplarini hallettim sirada xxx var oraya çözüm bulamadim xxx den sonrasinda da bir problem yok
örnek : 1 tamam
10 tamam
100 çözüm yok
100-01 tamam cümleye ilave edecegim
SELECT SUBSTRING(TBLMUPLAN.HESAP_KODU,1,1) AS 'KOD', TBLMUGRUP.GRUP_ISIM, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak
FROM TBLMUHFIS TBLMUHFIS, TBLMUPLAN TBLMUPLAN, TBLMUGRUP TBLMUGRUP where TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD AND TBLMUGRUP.GRUP_KOD=SUBSTRING(TBLMUPLAN.HESAP_KODU,1,1) group by SUBSTRING(TBLMUPLAN.HESAP_KODU,1,1),TBLMUGRUP.GRUP_ISIM
union all SELECT SUBSTRING(TBLMUPLAN.HESAP_KODU,1,2) AS 'KOD', TBLMUGRUP.GRUP_ISIM, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak
FROM TBLMUHFIS TBLMUHFIS, TBLMUPLAN TBLMUPLAN, TBLMUGRUP TBLMUGRUP where TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD AND TBLMUGRUP.GRUP_KOD=SUBSTRING(TBLMUPLAN.HESAP_KODU,1,2) group by SUBSTRING(TBLMUPLAN.HESAP_KODU,1,2),TBLMUGRUP.GRUP_ISIM
|
Mesajı Yazan: rifatgunduz
Mesaj Tarihi: 17 Mayıs 2010 Saat 19:48
Selam,
Benim yazdigimi neden kullanmiyorsunuz?
Iyi Çalismalar...
------------- Rifat Gündüz
www.netsis.com.tr
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 18 Mayıs 2010 Saat 09:29
hesap planinda bozukluk var 3-2-2.... gibi gitmiyor sorun orda
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 18 Mayıs 2010 Saat 09:49
asagidaki cümle tüm hesaplari görüntüledim sadece hesap planindaki ana hesap ile grup hesaplarin borç alacak toplamlari kaldi
cümle:
SELECT SUBSTRING(TBLMUPLAN.HESAP_KODU,1,1) AS 'KOD', TBLMUGRUP.GRUP_ISIM, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak
FROM TBLMUHFIS TBLMUHFIS, TBLMUPLAN TBLMUPLAN, TBLMUGRUP TBLMUGRUP where TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD AND TBLMUGRUP.GRUP_KOD=SUBSTRING(TBLMUPLAN.HESAP_KODU,1,1) group by SUBSTRING(TBLMUPLAN.HESAP_KODU,1,1),TBLMUGRUP.GRUP_ISIM
union all SELECT SUBSTRING(TBLMUPLAN.HESAP_KODU,1,2) AS 'KOD', TBLMUGRUP.GRUP_ISIM, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak
FROM TBLMUHFIS TBLMUHFIS, TBLMUPLAN TBLMUPLAN, TBLMUGRUP TBLMUGRUP where TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD AND TBLMUGRUP.GRUP_KOD=SUBSTRING(TBLMUPLAN.HESAP_KODU,1,2) group by SUBSTRING(TBLMUPLAN.HESAP_KODU,1,2),TBLMUGRUP.GRUP_ISIM
union all SELECT TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak FROM {oj DAT1052010.dbo.TBLMUPLAN TBLMUPLAN LEFT OUTER JOIN DAT1052010.dbo.TBLMUHFIS TBLMUHFIS ON TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD} where (TBLMUPLAN.AGM='a') group by TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI
union all SELECT TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak FROM {oj DAT1052010.dbo.TBLMUPLAN TBLMUPLAN LEFT OUTER JOIN DAT1052010.dbo.TBLMUHFIS TBLMUHFIS ON TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD} where (TBLMUPLAN.AGM='g') group by TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI
union all SELECT TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI, sum(case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as borç, sum(case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak FROM {oj DAT1052010.dbo.TBLMUPLAN TBLMUPLAN LEFT OUTER JOIN DAT1052010.dbo.TBLMUHFIS TBLMUHFIS ON TBLMUPLAN.HESAP_KODU = TBLMUHFIS.HES_KOD} where (TBLMUPLAN.AGM='m') group by TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI
order by SUBSTRING(TBLMUPLAN.HESAP_KODU,1,1)
|
Mesajı Yazan: Conari
Mesaj Tarihi: 18 Mayıs 2010 Saat 12:15
TBLMUHFIS te ana ve grup hesaplar olmayacagindan o sekilde gelmez.
uzunluklarina göre esitlemen lazim.
Su sekilde degistir.
SELECT TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI,
sum (case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as bor,
sum (case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak
FROM {oj TBLMUPLAN TBLMUPLAN
LEFT OUTER JOIN TBLMUHFIS TBLMUHFIS ON TBLMUPLAN.HESAP_KODU = SUBSTRING(TBLMUHFIS.HES_KOD,1,3)}
where (TBLMUPLAN.AGM='a')
group by TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI
union all
SELECT TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI,
sum (case when TBLMUHFIS.BA='1' then TBLMUHFIS.TUTAR else 0 end) as bor,
sum (case when TBLMUHFIS.BA='2' then TBLMUHFIS.TUTAR else 0 end) as alacak
FROM {oj TBLMUPLAN TBLMUPLAN
LEFT OUTER JOIN TBLMUHFIS TBLMUHFIS ON TBLMUPLAN.HESAP_KODU = SUBSTRING(TBLMUHFIS.HES_KOD,1,6)}
where (TBLMUPLAN.AGM='g')
group by TBLMUPLAN.HESAP_KODU, TBLMUPLAN.HS_ADI
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 18 Mayıs 2010 Saat 12:19
hesap plani inanin çok bozuk SUBSTRING(TBLMUHFIS.HES_KOD,1,6 bu tür yapilar fayda saglamiyor
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 18 Mayıs 2010 Saat 12:20
ana , grup ve muavin tiplerine indirgeme yapmam lazim
|
Mesajı Yazan: Conari
Mesaj Tarihi: 18 Mayıs 2010 Saat 13:32
Bu sekilde dene
................... ON TBLMUPLAN.HESAP_KODU = SUBSTRING(TBLMUHFIS.HES_KOD,1,LEN(TBLMUPLAN.HESAP_KODU))}
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 18 Mayıs 2010 Saat 14:20
Conari Yazdı:
Bu sekilde dene
................... ON TBLMUPLAN.HESAP_KODU = SUBSTRING(TBLMUHFIS.HES_KOD,1,LEN(TBLMUPLAN.HESAP_KODU))} |
bu cümle raporumu tamamladi.
çok tesekkür ediyorum emegi geçen arkadaslarin eline saglik
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 22 Mayıs 2010 Saat 17:56
tekrar merhaba
olusturdugum mizanda grup kod , grup isim ve gruplara ait toplamlarda renk vermek istiyorum
örn:
1
2
3 gibi gruplar kirmizi
11
12
13 gibi gruplar mavi
100
120
300 gibi gruplar yesil renk vermek istiyorum (sql komutu ile mümkünmü)
|
Mesajı Yazan: rifatgunduz
Mesaj Tarihi: 22 Mayıs 2010 Saat 19:07
Selam,
Sql'de sizin istediginiz gibi renklendirme yapilamamaktadir. Siz bu renklendirmeyi Excel'de VB kodlamasi ile rahatlikla yapabilirsiniz. Office disinda oldugumdan size kodlama örnegi gönderemiyorum. Siz arastirin bulamazsaniz destek veririm.
Iyi Çalismalar...
------------- Rifat Gündüz
www.netsis.com.tr
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 24 Mayıs 2010 Saat 09:06
Mesajı Yazan: Conari
Mesaj Tarihi: 24 Mayıs 2010 Saat 10:43
kosullu biçimlendirme den
formül seçip bunu girin ve biçim ayarlarini yapin.
=EGER(UZUNLUK(A2)=1;1)
A2 deki hesap uzunlugu 1 e esit ise verceginiz biçime göre renklenir. Diger uzunluklar içinde ekleme yapin. sonra diger hücrelere de uygulayin.
------------- Netsisden vazgeçemiyorum. Beni engelliyor..
|
Mesajı Yazan: kıl_ark
Mesaj Tarihi: 24 Mayıs 2010 Saat 12:38
|