merhaba arkadaşlar benim değişik bir sorum olucaktı;
A tablom kod int, tutar decimal
B tablom kod int, tutar decimal
öyle bir sql sorgusu yazılacak ki aynı koda sahip A tablosundaki tutar alanı ile B tablosundaki tutar alanı toplanacak ve tek bir tabloda gösterilecek.
Şöyleki
A tablosundaki kayıtlarımız ;
1 , 500
2, 600
B tablosundaki kayıtlarımız ;
1, 400
2, 200
sorgu sonucumuz ; yani A birleşim B
1, 900
2, 800
yada; aynı koda sahip A tablosundaki tutar alanı ile B tablosundaki tutar alanının farkı alınacak ve tek bir tabloda gösterilecek.
Şöyleki
A tablosundaki kayıtlarımız ;
1 , 500
2, 600
B tablosundaki kayıtlarımız ;
1, 400
2, 200
sorgu sonucumuz ; yani A birleşim B
1, 100
2, 400
böyle bir sorgu mümkünmüdür?
farklı bir sql sorgusu
Re: farklı bir sql sorgusu
Nerden çıkarttın sen bunun farklı bir sorgu olduğunu daha farklı sorgu görmemişin demek
Aşağıdaki kodu dene bakalım...
select A,B,A.tutar+B.tutar as Toplam from A,B
Yalnız bu kod tüm kayıtları birbiri ile toplar bir tablonda 10 diğerinde 20 kayıt varsa 200 tane satır döndürür...toplama işlemine konu olan alanları bir birine eşleyecek bir kriterin varsa satır satır eşlenik şekilde listeleyebileceğin bir kod daha yazılabilir örn:
select A,B,A.tutar+B.tutar as Toplam from A inner join B on B.id=A.id gibi

select A,B,A.tutar+B.tutar as Toplam from A,B
Yalnız bu kod tüm kayıtları birbiri ile toplar bir tablonda 10 diğerinde 20 kayıt varsa 200 tane satır döndürür...toplama işlemine konu olan alanları bir birine eşleyecek bir kriterin varsa satır satır eşlenik şekilde listeleyebileceğin bir kod daha yazılabilir örn:
select A,B,A.tutar+B.tutar as Toplam from A inner join B on B.id=A.id gibi
Re: farklı bir sql sorgusu
pardon dostum haklısın ben yanlış sormuşum soruyu sanırım dalgınlığıma geldi sabahtan beri uğraşıyorum da.Battosai yazdı:Nerden çıkarttın sen bunun farklı bir sorgu olduğunu daha farklı sorgu görmemişin demekAşağıdaki kodu dene bakalım...
A tablosu B Tablosu
1 , 500 1, 200
2, 600 2, 300
1, 100
1, 200
2, 100
A.sql: select kod,sum(tutar) as toplam from A group by kod;
A.sql sonucu
1, 800
2, 700 oluyor, ben bunu bu şekilde önce gruplayarak alıp sonra bu değerleri bir tabloya yazdırıp seninde gönderdiğin şekilde toplatabiliyorum fakat yapmak istediğim asıl şu ;
A.sql deki kodu şu şekilde yapabilirmiyiz ?
select A.kod,B.kod,sum(a.tutar)+B.tutar as Toplam from A group by A.kod inner join B on B.id=A.id gibi ????
Re: farklı bir sql sorgusu
tekrar merhaba sorguyu deneyerek yaptım sonunda eğer ihtiyacınız olursa kod budur; yalnız paradox tablosunda denedim şimdi fb de deniycem.
SELECT A.KOD,SUM(A.DEGER)+B.DEGER AS TOPLAM
FROM A LEFT JOIN B ON A.KOD=B.KOD GROUP BY A.KOD
SELECT A.KOD,SUM(A.DEGER)+B.DEGER AS TOPLAM
FROM A LEFT JOIN B ON A.KOD=B.KOD GROUP BY A.KOD
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: farklı bir sql sorgusu
Kod: Tümünü seç
select ATop.Kod, ATop.AToplam, BTop.BToplam, (ATop.AToplam - BTop.BToplam) as AFarkB, (BTop.BToplam - ATop.AToplam) as BFarkA, (ATop.AToplam + BTop.BToplam) as Toplam from
(select Kod, isNull(sum(Tutar),0) as AToplam from A group by Kod) as ATop
cross join
(select Kod, isNull(sum(Tutar),0) as BToplam from B group by Kod) as BTop
where ATop.Kod=BTop.Kod
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: farklı bir sql sorgusu
Şöyle bir SQL cümlesini de deneyebilirsiniz:
Kod: Tümünü seç
SELECT
T1.KOD,
COALESCE(T2.TUTAR, 0) AS TUTAR_A,
COALESCE(T3.TUTAR, 0) AS TUTAR_B,
COALESCE(T2.TUTAR, 0) + COALESCE(T3.TUTAR, 0) AS TOPLAM,
COALESCE(T2.TUTAR, 0) - COALESCE(T3.TUTAR, 0) AS FARK
FROM
(
SELECT KOD FROM TABLO_A UNION
SELECT KOD FROM TABLO_B
) T1
LEFT JOIN TABLO_A T2 ON T2.KOD = T1.KOD
LEFT JOIN TABLO_B T3 ON T3.KOD = T1.KOD