"INNER JOIN" metodu ile sorgu

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
94
Beğeniler
4
Excel Vers. ve Dili
Excel 2019
#61
Kesinlikle Toplam fiyat da = İş Emirleri Adet*Ürün Adet* Hammadde Net fiyat
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
7,658
Beğeniler
799
Excel Vers. ve Dili
32 Bit 2010 - İngilizce
#62
@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
94
Beğeniler
4
Excel Vers. ve Dili
Excel 2019
#63
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

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
7,658
Beğeniler
799
Excel Vers. ve Dili
32 Bit 2010 - İngilizce
#64
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
94
Beğeniler
4
Excel Vers. ve Dili
Excel 2019
#65
#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
94
Beğeniler
4
Excel Vers. ve Dili
Excel 2019
#67
Ama şu gerçek; iki kişi de aynı sonuca ulaşıyorsa hatalı anlatan benimdir. Bunun için kusura bakmayın Lütfen.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
7,658
Beğeniler
799
Excel Vers. ve Dili
32 Bit 2010 - İngilizce
#68
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
94
Beğeniler
4
Excel Vers. ve Dili
Excel 2019
#69
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

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
7,658
Beğeniler
799
Excel Vers. ve Dili
32 Bit 2010 - İngilizce
#70
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
94
Beğeniler
4
Excel Vers. ve Dili
Excel 2019
#73
@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
94
Beğeniler
4
Excel Vers. ve Dili
Excel 2019
#74
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.
 
Katılım
31 Aralık 2005
Mesajlar
3,802
Beğeniler
155
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
#75
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