"INNER JOIN" metodu ile sorgu

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Kesinlikle Toplam fiyat da = İş Emirleri Adet*Ürün Adet* Hammadde Net fiyat
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
@Zeki Gürsoy ;

Üstad; şimdiye kadar zaten habire "Toplam Ağırlık" bulmakla uğraşmıştık....

ToplamMaliyet = (ToplamAğırlık X Birim Fiyat)

diye kabul ederek, toplam maliyeti hesapladık.

Şimdi ne oldu da yanlış hesaplandığını söylüyor @ragnorak anlamakta zorlanıyorum...

Ayrıca, yukarıda 57. mesaja eklediğim resimdeki tutarların açıklamasını da bekliyorum kendisinden.


.
 
Son düzenleme:

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Kesinlikle budur Haluk Bey (y)
Aslında mantığı çok basit. Bütün imalatlarda Hammaddeler, Ürünleri; Ürünlerde İşin tamamını oluşturur. Sunta,vida vs. Hammadde; Masa,Keson,Dolap Ürün; Bunların hepsinin kullanıldığı Ofis bir İş Dosyasıdır (İş Emri Tablosu)
Hammaddelerin ağırlığı, Ürün ağırlığını; Ürünlerin ağırlıkları da, İşin toplam ağırlığını veriyor. İşin Maliyet kısmı da aynı şekilde işliyor.
Daha önce anlatmaya çalışmıştım.
Haluk Bey Maliyeti hesaplarken hangi sorguda ağırlık kullandınız? Ürün Maliyetlerinin hiçbir sorgusunda ağırlık yok.

Kod:
Set rs = CreateObject("adodb.recordset")
Sorgu = "Select sum(CCur([NET TOPLAM])) as [GENEL TOPLAM] from " & "(Select " & _
    " 1 - Replace(Table3.[ISKONTO_1],'%','')/100 as [ISKONTO1], 1 - Replace(Table3.[ISKONTO_2],'%','')/100 as [ISKONTO2], " & _
    " 1 - Replace(Table3.[ISKONTO_3],'%','')/100 as [ISKONTO3],  1 - Replace(Table3.[ISKONTO_4],'%','')/100 as [ISKONTO4], " & _
    " [ISKONTO1]*[ISKONTO2]*[ISKONTO3]*[ISKONTO4] as [ISKONTO TOPLAMI], " & _
        " IIF(Table1.[PARA_BIRIMI]='" & ChrW(8378) & "', Table1.[BIRIM_FIYAT] * '1' * Table2.[ADET] * [ISKONTO TOPLAMI], " & _
        " IIF(Table1.[PARA_BIRIMI]='" & ChrW(36) & "', Table1.[BIRIM_FIYAT] * '" & XED_FORM.DOLAR.Value & "' * Table2.[ADET] * [ISKONTO TOPLAMI], " & _
        " Table1.[BIRIM_FIYAT] * '" & XED_FORM.EURO.Value & "' * Table2.[ADET] * [ISKONTO TOPLAMI]))" & _
        " as [NET TOPLAM] from (" & "[HAMMADDE] as Table1 left join [URUN_DOSYALARI] as Table2 " & _
        "on Table1.[STOK_KODU] = Table2.[STOK_KODU] " & ") left join [ISKONTO] as Table3 on Table1.[FIRMA] = Table3.[FIRMA]" & _
        "where Table2.[URUN_KODU]='" & ListBox1.LIST(ListBox1.ListIndex, 0) & "')"
rs.Open Sorgu, con, 1, 3

MALIYET.Value = Format(rs("GENEL TOPLAM"), "currency")
Bu en son Ürün maliyeti sorgunuz. Revize edip kullandığım hali. Ağırlık yok.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Arkadaşım, maliyet işine konunun en sonunda girdik.

İlk önce, eklediğim resimde işaretlediğim 2 adet bedelin ne olduğunu açıklar mısın?

Capture.PNG

.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
#57 mesajdaki Net birim fiyat* (İş Adedi*Ürün Adedi) Haluk bey? Üstteki benim hesapladığım, Alttaki Zeki bey'in hazırladığı access dosyasında bulduğu değer
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Anladım; siz ikisinin de benim olduğu zannettiniz.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Ama şu gerçek; iki kişi de aynı sonuca ulaşıyorsa hatalı anlatan benimdir. Bunun için kusura bakmayın Lütfen.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Biraz sakinleşip mesajları okuyunca gördüm ki; benim ve Zeki Beyin sorgusunda

ToplamMaliyet = ∑ (ToplamAğırlık X NetBirimFiyat)

kullanılıyor, ama sizin istediğiniz;

ToplamMaliyet = ∑ (ToplamAdet X NetBirimFiyat)

Problem bu mudur?

.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Kod:
 strQuery = "Select sum([TOPLAM_MALIYET]) as [TOPLAM_IS_MALIYETI] from " & _
               "(Select Table1.[ADET] * Table2.[ADET] as [TOPLAM_AGIRLIK]," & _
               " 1 - Replace(Table4.[ISKONTO_1],'%','')/100 as [ISKONTO1], " & _
               " 1 - Replace(Table4.[ISKONTO_2],'%','')/100 as [ISKONTO2], " & _
               " 1 - Replace(Table4.[ISKONTO_3],'%','')/100 as [ISKONTO3], " & _
               " 1 - Replace(Table4.[ISKONTO_4],'%','')/100 as [ISKONTO4], " & _
               " [ISKONTO1]*[ISKONTO2]*[ISKONTO3]*[ISKONTO4] as [ISKONTO_TOPLAMI], " & _
               " IIF(Table3.[PARA_BIRIMI]='" & ChrW(8378) & "', Table3.[BIRIM_FIYAT] * '1'," & _
               " IIF(Table3.[PARA_BIRIMI]='" & ChrW(36) & "', Table3.[BIRIM_FIYAT] * '" & Range("S5") & "'," & _
               " IIF(Table3.[PARA_BIRIMI]='" & ChrW(8364) & "', Table3.[BIRIM_FIYAT] * '" & Range("S6") & "', '0'))) as [TL_BIRIMFIYAT]," & _
               " [TL_BIRIMFIYAT] * [ISKONTO_TOPLAMI] as [NET_BIRIMFIYAT]," & _
               " [TOPLAM_AGIRLIK] * [NET_BIRIMFIYAT] as [TOPLAM_MALIYET]" & _
               " from (([HAMMADDE$] as Table3" & _
                         " left join [URUN_DOSYALARI$] as Table2" & _
                         " on Table3.[STOK_KODU] = Table2.[STOK_KODU])" & _
                            " left join [ISKONTO$] as Table4" & _
                            " on Table4.[FIRMA] = Table3.[FIRMA])" & _
                         " left join [IS_EMIRLERI$] as Table1" & _
                         " on Table1.[URUN_KODU] = Table2.[URUN_KODU]" & _
               " where Table1.[IS_KODU]='" & Range("S3") & "')"
En son yazdığınız bu sorgudan da " * Table3.[AGIRLIK]" çıkarınca sonuç tamam oluyor. Yanlış anlatım için tekrar kusura bakmayın.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Neyse.... sabah sabah aksiyon yaşadık.

Birim fiyatın TL/KG değil, TL/AD olduğunu baştan söyleseydiniz bu aksiyona gerek kalmayacaktı.

Benim ve Zeki Beyin dosyalarını güle güle kullanın.... bize birer banyo dolabı hediye edersiniz artık :LOL:

.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Lafı bile olmaz. Ölçü,adres ve model alayım hemen.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Konuyu toparlamak adına, dosyamın son şeklini bu mesaja ekledim.

.
 

Ekli dosyalar

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
@Zeki Gürsoy hocam Access dosyası inceledim. Maliyetler sorgu tablosunu nasıl oluşturduğunuzu Access'i çok bilmediğim için daha yeni anlayabildim. Diğer Tablolar değiştiğinde Bu tablo kendini otomatik olarak revize edebiliyor mu? (Ben denedim yapmadı.) Hammadde de Stok kodunu değiştirince Maliyetler sorgu tablosunda değişmedi. Bir yerde bir ayarımı var, bulamadım.
 
Son düzenleme:

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Zaten değişmemesi gerekiyormuş. :D @Zeki Gürsoy
SELECT IE.IS_KODU, IE.URUN_KODU, UD.STOK_KODU, HM.MALZEMELER, UD.ADET, IE.ADET * UD.ADET * HM.AGIRLIK AS TOP_AGIRLIK, HM.BIRIM_FIYAT AS BRUT_BIRIM_FIYAT, ISK.ISKONTO_1 + (ISK.ISKONTO_2 * (1 - ISK.ISKONTO_1) + (ISK.ISKONTO_3 * (1-ISK.ISKONTO_1 - ISK.ISKONTO_2) ) ) AS TOP_ISKONTO, HM.BIRIM_FIYAT * (1-ISK.ISKONTO_1) AS NET_FIYAT, IE.ADET * UD.ADET * NET_FIYAT * KUR.KUR AS TL_TUTAR, HM.PARA_BIRIMI AS ORJINAL_PARA
FROM (((IS_EMIRLERI AS IE LEFT JOIN URUN_DOSYALARI AS UD ON IE.URUN_KODU = UD.URUN_KODU) LEFT JOIN HAMMADDE AS HM ON UD.STOK_KODU = HM.STOK_KODU) LEFT JOIN ISKONTO AS ISK ON HM.FIRMA = ISK.FIRMA) LEFT JOIN KURLAR AS KUR ON HM.PARA_BIRIMI = KUR.KUR_ADI;
sorgudan da Ağırlığı alınca;

1564134571846.png artık tamamdır.
Sizde çok teşekkür ederim. Artık nasıl ilerleyeceğimi daha kararlı bir şekilde anladım.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Ben mesajı görene kadar olayı çözmüşsünüz. :)
Sorguda "NET_FIYAT" alanını hesaplamak için yanlışlıkla yalnız İskonto_1' i almışım. "Maliyetler" isimli kayıtlı sorguyu aşağıdaki sorgu ile değiştirirseniz (tasarım modunda açarak), ikinci ve üçüncü iskontolara değer verildiğinde hatalı net fiyata ulaşılmamış olur.
Kolay gelsin...

SQL:
SELECT
  IE.IS_KODU,
  IE.URUN_KODU,
  UD.STOK_KODU,
  HM.MALZEMELER,
  UD.ADET,
  IE.ADET * UD.ADET * HM.AGIRLIK AS TOP_AGIRLIK,
  HM.BIRIM_FIYAT AS BRUT_BIRIM_FIYAT,
  ISK.ISKONTO_1 + (ISK.ISKONTO_2 * (1 - ISK.ISKONTO_1) + (ISK.ISKONTO_3 * (1-ISK.ISKONTO_1 - ISK.ISKONTO_2) ) ) AS TOP_ISKONTO,
  HM.BIRIM_FIYAT * (1 - TOP_ISKONTO) AS NET_FIYAT,
  IE.ADET * UD.ADET * HM.AGIRLIK * NET_FIYAT * KUR.KUR AS TL_TUTAR,
  HM.PARA_BIRIMI AS ORJINAL_PARA
FROM
(
   (
      (
         IS_EMIRLERI AS IE LEFT JOIN URUN_DOSYALARI AS UD ON IE.URUN_KODU = UD.URUN_KODU
      )
      LEFT JOIN HAMMADDE AS HM ON UD.STOK_KODU = HM.STOK_KODU
   )
   LEFT JOIN ISKONTO AS ISK ON HM.FIRMA = ISK.FIRMA
)
LEFT JOIN KURLAR AS KUR ON HM.PARA_BIRIMI = KUR.KUR_ADI;
 
Üst