"INNER JOIN" metodu ile sorgu

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
Yalnız sorguya odaklandığımdan bu kısmı atlamışım. :) Ben kurların veritanında yeni bir tablo oluşturarak (güncel kur bilgisi sorgudan önce tablo güncellenerek) sorguya join edilmesi taraftarıyım ama @ragnorak ne diyecek ona bakalım.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Benim daha önce yazdığım mesajların birinde, sanıyorum 16. mesajda döviz kurlarını sayfadaki hücrelerden okuyarak hesap yapılıyordu. Anladığım kadarıyla @ragnorak da benzer şekilde form üzerindeki TextBox'lardan okuyor bu bilgileri.

.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
İskonto hesabı neden ben anlamadım. https://kuyruk.com/iskonto/ bu sitede de öyle hesaplanmış sonuçları karşılaştırdım. Sorun görünmüyor. Bende @Haluk Beyin yaptığı gibi hesaplıyorum.
@Zeki Gürsoy İskontoları; Hammadde listesinde başka bir alana Birim Fiyat üzerine uygulamak bana da çok mantıklı geldi. Çünkü her zaman iskontolar değişmiyor. Değiştiğinde tek tabloya sorgu atmış olacağız. Diğer ürün fiyatlarının ve İş dosyalarının sorgusu daha da hızlanır ki, bu önemli çünkü Ürünler ve iş emirleri Listbox'larda Liste halinde ve her tıkladığımda bu sorguları kullanıyor. (Hem Fiyat, hem ağırlık sorgularını ve sonrasında planladığım Hacim hesapları) Kurları da iskonto gibi yapmak sonrasında başıma ne iş açar? Onu kestiremiyorum işte :unsure:
Ama şu kesin sizin söylediğiniz de, Haluk Beyin hiç üşenmeden, sıkılmadan yazdığı sorgularda benim yaptığımdan yöntemden kat ve kat daha iyi. Bu tartışılmaz.
 

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
@ragnorak, ben de verdiğiniz bağlantıdan kontrol ettim. Toplam orana birbirlerini düştükten sonra ulaşılıyor. Veritabanınızda tek oran olduğundan bu fark gözle görülemiyor haliyle.

İskonto oranlarını Hammadde tablosunda saklamak elbette sizin tercihiniz ancak hız konusunda biraz yanılıyorsunuz. Çünkü, indexleri doğru tasarlanan bir veritabınında milyonlarca kayıt da olsa, join performansındaki düşüş, saniyenin 1/10 undan daha azdır. Ben veritabanınızda gerekli indexleri oluşturdum. Eğer çok fazla kayıt üzerinde çalışıyorsanız Index performansı ihmal edilmemesi gereken konudur.

Ben kur bilgilerini önce veritabanına yazarak, ardından join işlemi ile TL' ye çeviren bir sistem yaptım. Hoşunuza giderse üzerinde oynamalar yaparak esas dosyanıza uyarlayabilirsiniz.
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
@ragnorak, İşin iskonto kısmına karışmadan ve mevcut veri tabanı dosyalarına müdahale etmeden hazırladığım dosya ektedir.

Yapılan işin doğru veya yanlış olup olmadığının kontrol edilebilmesi için Detay Tabloyu oldukça geniş hazırladım ...... A - Q sütunları arasında belirtilmektedir.

Diğer yandan, bu işlerin üstadı @Zeki Gürsoy 'dur..... veri tabanı hakkındaki önerilerini dikkate almanız iyi olur.

.
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Bu arada, benim son dosya ile Zeki Beyin yaptığı son dosya arasında farklı sonuçlar çıkıyor.

@Zeki Gürsoy 'un dosyasında EUR için kuru, benim dosyamdaki gibi 6,3881 TL girdim.... İş Kodu: ID.10038 için toplam iş maliyeti bende 7.649,58 TL olarak hesaplanırken Zeki Beyin dosyasında 1.594,41 TL olarak hesaplandı. Bilemiyorum, belki de benimkinde hata vardır.....

Not:

1) Yukarıda 38 No'lu mesajda, benim hesapladığım iskonto oranının yanlış olduğunu belirtmişti Zeki Bey. Ancak, aslında her ikimizin de hesapladığı son net birim fiyat birbirinin aynısı. Sadece yöntem farklı..... şöyle ki; eğer iskonto oranları veri tabanında {25%; 0%; 0%; 0%} ve Birim Fiyat 100 TL ise, benim hesap yöntemime göre toplam iskonto oranı 0,75*1*1*1=0,75 olup net birim fiyat 100*0,75=75 TL olarak hesaplanır. Zeki Beyin yönteminde ise toplam iskonto oranı 0,25 olup, net birim fiyat 100*(1-0,25)=75 TL olarak hesaplanır.

2) @Zeki Gürsoy ; üstad senin dosyanda EUR kurunu değiştirmeme rağmen Toplam İş Maliyeti hiç değişmiyor. Sanki veri tabanı döviz kuruna göre "update" olmuyor gibi geldi bana....

Düzeltme: Pivot tabloyu manuel olarak "refresh" yapmak gerekiyor sanırım .... Belki bu da VBA komutlarıyla yapılsa, daha iyi olurdu.

3) "Toplam Ağırlık" hesabı da 2 dosyada birbirinden farklı. İş Kodu: ID.10038 için benim dosyada 393,55 KG olarak hesaplanırken, senin dosyada 84,45 KG olarak hesaplanıyor. Bizim dosyaların birisinde bir cinslik var anlaşılan .... :unsure:

Neyse, hava serinledi biraz.... ben gidip günlük yürüyüş ve egzersizlerimi yapayım ......

.
 
Son düzenleme:

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
Haluk Bey, sorguda miktarları çarpmadığım için TL tutarları eksik çıkıyordu. Pivot tablodaki otomatik güncellemeyi de aktif ettim. Düzenlenmiş yeni dosyalar ekli arşivdedir.

"Maliyetler" isimli View kaynak sorgusu:

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-ISK.ISKONTO_1) 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;
Düzeltme : Toplam Ağırlık miktarı düzeltildi. Yeni versiyon Demo3.rar
 

Ekli dosyalar

Son düzenleme:

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Üstadım eline sağlık .....

İş Kodu: ID.10038 için "Toplam Maliyet" her ikimizde şimdi aynı hesaplandı ama ilginç bir durum var; bendeki "Toplam Ağırlık" 393,55 KG ama senin dosyanda yine 84,45 KG :unsure:

(Not: İskonto hesap yöntemlerimiz farklı olmakla birlikte, aynı "Toplam Maliyeti" buluyoruz)
.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
@Zeki Gürsoy 'un dosyasında EUR için kuru, benim dosyamdaki gibi 6,3881 TL girdim.... İş Kodu: ID.10038 için toplam iş maliyeti bende 7.649,58 TL olarak hesaplanırken Zeki Beyin dosyasında 1.594,41 TL olarak hesaplandı. Bilemiyorum, belki de benimkinde hata vardır.....
ID.1038 için ağırlık 393,55 KG, Fiyat 835,32 tl görünüyor bende. ID.1038 nolu iş emrinde K.101.1011 kodlu ürün adedi 2,5. Bu değer 25 olursa o zaman 7.500 'lre çıkıyor toplam fiyat. Bir sorun var. Hesaplamaları manuel yapıp durumu kontrol ediyorum.
 
Son düzenleme:

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Benim dosyada "Detay GÖSTER" butonuna tıkladığınızda, zaten dökümü alacaksınız ..... Oradan durum belli oluyor.

A-Q sütunları arasında 11 sütun detay bilgi var.

.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Formun satınalma alanından da kontrol ettim. Toplam Maliyet aynı çıkıyor. Ekran Alıntısı.JPG
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Haluk hocam inceledim. İş adedinin 2,5 olduğu satırlarda toplam fiyat basamak (*10 yapmış) atlamış. Ben mi yanlış görüyorum?Ekran Alıntısı.JPG
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Haluk Hocam ağırlık ile çarpmış. Diğerlerini de aynı yapmış! Ağırlık ile Net Birim Fiyat çarpımları Toplam Maliyeti vermiş. Düzeltince fiyat 837.. oluyor.
Yani iş adedi*ürün adedi*net birim fiyat = toplam maliyet
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Formun satınalma alanından da kontrol ettim. Toplam Maliyet aynı çıkıyor.
Arkadaşım, ne demek istediğini anlayamıyorum .....

Aşağıdaki resimde, 1. bölümün toplamı senin dediğin 835,32 TL iken, 2. bölümün toplamı benim ve Zeki Beyin hesapladığı 7.649,58 TL var.

Sen bu değerlerden hangisine ulaşmak istiyorsun ? Ayrıca, bundan önceki yaklaşık 50 mesaj boyunca hazırlanan sorguların doğru sonuçlar getirdiğini söylemiştin. Bu sorgu da senin daha önce verdiğin bilgiler doğrultusunda hazırlandı.

Öncelikle, aşağıdaki resimde belirttiğim değerleri açıklaman gerekiyor....




.Capture.PNG
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Maliyet nasıl hesaplanıyor ? Daha doğrusu "Birim Fiyatların" birimi nedir ? TL/KG veya TL/AD .... hangisi ?

Şimdiye kadar hep ağırlık üzerinden gittik, sen de bir şey bahsetmedin bu konuda....

.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Arkadaşım, ne demek istediğini anlayamıyorum .....

Aşağıdaki resimde (senin eklediğin resimden alıntı....), 1. bölümün toplamı senin dediğin 835,32 TL iken, 2. bölümün toplamı benim ve Zeki Beyin hesapladığı 7.649,58 TL var.

Sen bu değerlerden hangisine ulaşmak istiyorsun ? Ayrıca, bundan önceki yaklaşık 50 mesaj boyunca hazırlanan sorguların doğru sonuçlar getirdiğini söylemiştin. Bu sorgu da senin daha önce verdiğin bilgiler doğrultusunda hazırlandı.

Öncelikle, aşağıdaki resimde belirttiğim değerleri açıklaman gerekiyor....

Capture.PNG
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
İşin toplam maliyeti dışındaki herşey doğru. Ürün Ağırlığı doğru, İş Ağırlığı doğru, Ürün Fiyatı Doğru, İşin Toplam fiyatı yanlış. Sebepte yukarıda dediğim gibi Net birim fiyatın ağırlıkla çarpılması olmuş anladığım kadarıyla. Başka bir sorun yok .Sabah sabah bende korktum vallahi şirketi batırdım diye :)
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Maliyet nasıl hesaplanıyor ? Daha doğrusu Birim Fiyatın birimi nedir ?

TL/KG veya TL/AD ... hangisi?

Bu konuda daha önce bilgi vermedin....

.
 

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
Fiyat, sanırım adetin fiyatı ama, alıntı aşağıda.

1564125348857.png
 
Üst