Son Alım Bilgileri Sorgusu

Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Bir çok soruna yardımcı olduktan sonra,
foruma bir soru da ben göndereyim dedim.

Stoktaki Malzemelerin Son Alım Bilgilerine ihtiyacım oldu.
(Malzemenin en son alındığı Tarih, Fiyat, Döviz ve Cari Bilgisi)

Biraz uğraştıktan sonra aşağıdaki sorgu ile çözdüm.
Böylelikle böyle bir sorguya ihtiyacı olanlar da kullanabilir.

Kod:
Select STOKKODU, STOKTANIMI,
   (Select Top 1 FATTARIHI From FATURA Where STOKKODU=STOK.STOKKODU Order By FATTARIHI DESC) as SONALIMTARIHI,
   (Select Top 1 FATFIYATI From FATURA Where STOKKODU=STOK.STOKKODU Order By FATTARIHI DESC) as SONALIMFIYATI,
   (Select Top 1 FATDOVIZ  From FATURA Where STOKKODU=STOK.STOKKODU Order By FATTARIHI DESC) as SONALIMDOVIZ,
   (Select Top 1 FATCARINO From FATURA Where STOKKODU=STOK.STOKKODU Order By FATTARIHI DESC) as SONALIMCARINO
From STOK 
Order By STOKKODU
Evet doğru verileri alıyorum ve işimi görüyor ama
binlerce kayıt içeren tablolardan geldiği için performansı çok beğenmedim.
Benim aklıma da daha iyi bir çözüm gelmedi.

Daha iyi bir çözüm öneriniz var mı?



Not:Örnek tablolar, veriler ve yaptığım sorgu ektedir.
 
Son düzenleme:
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın seruz,

İki aşamalı sorguyla çözdüm deneyin:

ilk sorgu adı:qryLastDay

Kod:
SELECT FATURA.STOKKODU, STOK.STOKTANIMI, Max(FATURA.FATTARIHI) AS LastFATTARIHI
FROM STOK INNER JOIN FATURA ON STOK.STOKKODU=FATURA.STOKKODU
GROUP BY FATURA.STOKKODU, STOK.STOKTANIMI;
İkinci sorgu adı:qrySonAlim

Kod:
SELECT FATURA.FATID, FATURA.STOKKODU, qryLastDate.STOKTANIMI, FATURA.FATTARIHI, FATURA.FATFIYATI, FATURA.FATDOVIZ, FATURA.FATCARINO
FROM qryLastDate INNER JOIN FATURA ON (qryLastDate.LastFATTARIHI = FATURA.FATTARIHI) AND (qryLastDate.STOKKODU = FATURA.STOKKODU)
ORDER BY qryLastDate.STOKTANIMI;
İyi çalışmalar
 
Katılım
8 Eylül 2006
Mesajlar
155
Excel Vers. ve Dili
Excel 2002
Tşk. Sn. Modalı
Pazartesi günü SQL Server'da Query Analyzer ile performansları inceleyeceğim
ve belki indexlerle biraz oynayıp hangi çözümün daha iyi olduğuna karar vereceğim.
Daha fazla hız için Sorguyu SQL'de view yapmak istiyorum
o nedenle tek sorgu olması lazım.

Bakalım, belki başka çözüm önerileri gelebilir.
 
Katılım
18 Nisan 2007
Mesajlar
2,053
Excel Vers. ve Dili
Access 2019
Merhaba..

Alternatif çözüm..:

Kod:
SELECT tr.STOKKODU, STOK.STOKTANIMI, tr.FATTARIHI, tr.FATFIYATI, tr.FATDOVIZ, tr.FATCARINO
FROM FATURA AS tr INNER JOIN STOK ON tr.STOKKODU = STOK.STOKKODU
WHERE (((tr.FATTARIHI) In (Select Top 1 FATTARIHI  From FATURA as trz  Where tr.STOKKODU=trz.STOKKODU Order By FATTARIHI Desc)))
ORDER BY STOK.STOKTANIMI;
Bu tür sorgulamalarda performans açısından en iyi netice alacağınız yöntemlerden biridir bu..

İyi akşamlar..
 
Üst