Sorguda Dsum Fonksiyonun Sql Koduna Dönüştürme

1 2
29/12/2024, 00:54

truhi

Değerli Hocalarım merhaba;

Ekli database' de iki tablo mevcut, "tbl_Orders" ve "tbl_Mixer" bu iki tablodan bir sorgu oluşturmaya çalışıyorum.

"tbl_Orders" : "SözlesmeNo"
"tbl_Mixer" : "Sözlesme_1" , "Sözlesme_2" , "Sözlesme_3" , "Sözlesme_4" , "Sözlesme_5"

alanlarının her biriyle eşleştirecek, ilgili miktar alanlarını toplamak için Dsum fonksiyonu ile oluşturduğum 5 alanı Sql kodu ile oluşturmak mümkün müdür?


Kod:
SELECT DISTINCT tbl_Orders.SozlesmeNo, DSum("[Miktar_1]","tbl_Mixer","[Sozlesme_1] = '" & [SozlesmeNo] & "'") AS Miktar1, DSum("[Miktar_2]","tbl_Mixer","[Sozlesme_2] = '" & [SozlesmeNo] & "'") AS Miktar2, DSum("[Miktar_3]","tbl_Mixer","[Sozlesme_3] = '" & [SozlesmeNo] & "'") AS Miktar3, DSum("[Miktar_4]","tbl_Mixer","[Sozlesme_4] = '" & [SozlesmeNo] & "'") AS Miktar4, DSum("[Miktar_5]","tbl_Mixer","[Sozlesme_5] = '" & [SozlesmeNo] & "'") AS Miktar5
FROM tbl_Orders, tbl_Mixer;

yardım ve destekleriniz için şimdiden teşekkürler,
iyi akşamlar.
29/12/2024, 14:45

berduş

daha önce benzer bir isteğinizi cevaplamıştık, o konuyu incelediniz mi?
29/12/2024, 17:32

truhi

(29/12/2024, 14:45)berduş yazdı: daha önce benzer bir isteğinizi cevaplamıştık, o konuyu incelediniz mi?

O konuyu inceledim Hocam
fakat buraya uyarlayamadım

Not: burada aklıma yeni gelen gelen "Sözlesme_1" , "Sözlesme_2" , "Sözlesme_3" , "Sözlesme_4" , "Sözlesme_5" adında 5 tane alt sorgu oluşturmak

sonra bu sorgularda miktar değerlerini çekmek, tabiki farklı bir çözüm bulamaz isem;


ilginiz için tekrar teşekkür ederim.
29/12/2024, 18:06

hedefkaya

SELECT DISTINCT tbl_Orders.SozlesmeNo,
Dsum ("[Miktar_1]", "tbl_Mixer", "[Sozlesme_1] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar1,
Dsum ("[Miktar_2]", "tbl_Mixer", "[Sozlesme_2] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar2,
Dsum ("[Miktar_3]", "tbl_Mixer", "[Sozlesme_3] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar3,
Dsum ("[Miktar_4]", "tbl_Mixer", "[Sozlesme_4] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar4,
Dsum ("[Miktar_5]", "tbl_Mixer", "[Sozlesme_5] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar5
FROM tbl_Orders;


bu şekilde denermisin
29/12/2024, 18:28

truhi

(29/12/2024, 18:06)hedefkaya yazdı: SELECT DISTINCT tbl_Orders.SozlesmeNo,
Dsum ("[Miktar_1]", "tbl_Mixer", "[Sozlesme_1] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar1,
Dsum ("[Miktar_2]", "tbl_Mixer", "[Sozlesme_2] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar2,
Dsum ("[Miktar_3]", "tbl_Mixer", "[Sozlesme_3] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar3,
Dsum ("[Miktar_4]", "tbl_Mixer", "[Sozlesme_4] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar4,
Dsum ("[Miktar_5]", "tbl_Mixer", "[Sozlesme_5] = '" & tbl_Orders.SozlesmeNo & "'") AS Miktar5
FROM tbl_Orders;


bu şekilde denermisin

Hocam öncelikle ilginize teşekkür ederim
yalnız ben DSum fonsiyonu ile bu şekilde çözüm üretmiştim zaten;
Amacım Dsum fonksiyonundan kurtulmak, çünkü veriler çoğalınca hesaplamada sıkıntı yaşanıyor.
29/12/2024, 19:21

atoykan

Çalışmıyorsunuz ya da yeteri kadar dikkat etmiyorsunuz Sayın @truhi.
DSUM işlemi ne yapıyor tbl_Mixer tablonuzda tbl_orders tablonuzdaki SozlesmeNo'ya göre toplam alıyor.
Bunu nasıl sorguya çeviririz birincisi bir toplam alacağımız için SUM değerine ihtiyacımız var, nereden alacağımız belli, kriter belli O zaman sadece sorguyu yazmak kalıyor
SELECT SUM(Miktar_1) FROM tbl_Mixer WHERE WHERE tbl_Mixer.Sozlesme_1 = tbl_Orders.SozlesmeNo
Bu sorgu bize tbl_Orders tablosundaki SozlesmeNo alanına eşit olan tbl_Mixer tablosundaki Miktar_1 toplamını verir. bunu Dsum yerine kullanabilirsiniz.
DSUm sorgumuzda nasıl kullanılmış
DSum("[Miktar_1]","tbl_Mixer","[Sozlesme_1] = '" & [SozlesmeNo] & "'") AS Miktar1 yani toplamı Miktar1 adı ile göstermiş, Dsum yerine sorgyu hazırlayabildiysek yer değiştirebiliriz. O halde
(SELECT SUM(Miktar_1) FROM tbl_Mixer WHERE tbl_Mixer.Sozlesme_1 = tbl_Orders.SozlesmeNo) AS Miktar1 Dsum 'dan farklı olmayacaktır. Buradan hareketle diğer Dsum lar için aynı işlemi yaparsanız sorgunuzun yeni hali
SELECT DISTINCT 
    tbl_Orders.SozlesmeNo,
    (SELECT SUM(Miktar_1) FROM tbl_Mixer WHERE tbl_Mixer.Sozlesme_1 = tbl_Orders.SozlesmeNo) AS Miktar1,
    (SELECT SUM(Miktar_2) FROM tbl_Mixer WHERE tbl_Mixer.Sozlesme_2 = tbl_Orders.SozlesmeNo) AS Miktar2,
    (SELECT SUM(Miktar_3) FROM tbl_Mixer WHERE tbl_Mixer.Sozlesme_3 = tbl_Orders.SozlesmeNo) AS Miktar3,
    (SELECT SUM(Miktar_4) FROM tbl_Mixer WHERE tbl_Mixer.Sozlesme_4 = tbl_Orders.SozlesmeNo) AS Miktar4,
    (SELECT SUM(Miktar_5) FROM tbl_Mixer WHERE tbl_Mixer.Sozlesme_5 = tbl_Orders.SozlesmeNo) AS Miktar5
FROM
    tbl_Orders;
olur. Biraz daha dikkat, biraz daha gayret lütfen. Bunları artık gözü kapalı çözmeniz gerek.
1 2