1

Konu: Select Bottom 1 from stok..stem -- bottom yok

SQLde SELECT bottom olmadığını yeni farkettim. Yapmak istediğim devirin en yeni tarihlisini stok dosyasına işlemek.

kullandığım komut:

SQL
UPDATE stk..stok 

SET stok.stokta=(SELECT top 1 devir FROM stk..stem WITH (INDEX ( stok_tarih_gir1çik2 )) WHERE stem.stokod=@stokod)
WHERE stok.stokod=@stokod

Soru: WITH (INDEX ( stok_tarih_gir1çik2 )) DESC şeklinde hazır indeksi terse çeviren komut var mı.
         Yoksa yeni index mi yaratayım.

-----
aşağıda bütün SQL kodları - ilk kayıtları çok güzel buluyor, ama gereken her stoğun son kaydı

SQL
DECLARE @adet INT   --Overall running total

    SET @adet = 0
DECLARE @stokod INT   --The "anchor" and "account change detector"
 
DECLARE contact_cursor CURSOR FOR
SELECT stokod FROM stk..stok
 
OPEN contact_cursor;
 
FETCH NEXT FROM contact_cursor INTO @stokod;   -- Perform the first fetch.
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE stk..stem
    SET  @adet  = devir =  @adet + (miktar ),
         @stokod = stem.stokod
FROM stk..stem  WITH (INDEX ( stok_tarih_gir1çik2))
WHERE stem.stokod=@stokod
OPTION (FORCE ORDER) 
 
UPDATE stk..stok
SET stok.stokta=(SELECT top 1 devir FROM stk..stem WITH (INDEX ( stok_tarih_gir1çik2 )) WHERE stem.stokod=@stokod)
WHERE stok.stokod=@stokod
   -- This is executed as long as the previous fetch succeeds.
   FETCH NEXT FROM contact_cursor INTO @stokod ;
END
 
CLOSE contact_cursor;
VFP9 SP2

2

Re: Select Bottom 1 from stok..stem -- bottom yok

SQL
UPDATE stk..stok 

SET stok.stokta=(SELECT top 1 devir FROM stk..stem WHERE stem.stokod=@stokod ORDER BY stok_tarih_gir1çik2 DESC )
WHERE stok.stokod=@stokod

Bu nasil olsa o indexi kendisi kullanacak.

3

Re: Select Bottom 1 from stok..stem -- bottom yok

evet indexi kullandığında en eski tarihli kayıt geliyor, istenen en yeni kayıttaki devir.
indexi terten kullanmanın komutu (VFPda DESC deyince oluyor) veya SELECT BOTTOM (1) gerekli

gerçi aşağıdaki şekilde çözdüm, sorum akademik kaldı.

SQL
UPDATE stk..stok 

SET stok.stokta=(SELECT SUM(miktar) AS miktar FROM stk..stem WHERE stem.stokod=@stokod)
WHERE stok.stokod=@stokod
VFP9 SP2