arkadaslar,
artik hepinizin bildigi stok programinda son asamaya geldim ve klasik olarak bir problemle karsilastim.stoktaki her urunun bir kritik stok miktari var ve her urun icin bu kritik stok miktari farkli.sql de bu kritik stok miktarinin altinda olan urunleri listeletmek istiyorum.group by ve having komutunu kullaniyorum.problem su: ilk urunun kritik stok miktari 500.listelerken sadece 500'un altinda olan urunleri listeliyor.oysa her urunun kritik stok miktari farkli.her urunu kendi kritik stok miktarinin asagisindaysa listeletmek istiyorum.nasil yaparim?
kodlarim su sekilde;
Query1.Close;
Query1.SQl.Clear;
Query1.SQL.Add('select Malzeme.Malzeme_Cinsi,Malzeme.Kritik_Stok_Miktari,sum(stok.Miktar*stok.Girdi_Cikti) Mevcut');
Query1.SQL.Add('from Stok,Malzeme where Malzeme.Kodu=Stok.Malzeme group by Malzeme.Kritik_Stok_Miktari,Malzeme.Malzeme_Cinsi having sum(stok.Miktar*stok.Girdi_Cikti)<Malzeme.Kritik_Stok_Miktari');
Query1.open;
Query1.Refresh;
sql sorunu 2
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
kod bi problem vermiyor ama sadece 500 den kucuk olanlari gosteriyor.soyle ki a urununun kritik stok miktari 500, b urununun kritik stok miktari 100.b urununden 400 tane var( yani b urunu kendi kritik stok miktarindan fazla) ama b urununu genede listeliyor.b urununu 501 adet yapiyorum, o zaman b urununu listelemiyor.benim suphelendigim kritik stok miktari olarak a urununun kritik stok miktarini aliyor.(a urunu ilk kayit).
-
- Kıdemli Üye
- Mesajlar: 395
- Kayıt: 22 Tem 2004 09:15
- Konum: İzmir
- İletişim:
Selam,
Yukardan anlaşılan malzeme_cinsi ne göre bir grup yaptığınız. Grubun toplamını malzeme nin kritiğiyle karşılaştırıyorsunuz bu yanlış sonuca neden oluyor. Bu nedenle;
şeklinde bir query ile malzeme cinsleri bazında toplam gösterebilirsiniz. İç query de ürün toplamlarını kritik miktarlarıyla karşılaştırıp cins,ürün,miktar oluşturuluyor. Dışta ise buradan özet bilgi oluşturuluyor.
Kolay gelsin,
Kod: Tümünü seç
SELECT malzeme.malzeme_cinsi, malzeme.kritik_stok_miktari,
SUM (stok.miktar * stok.girdi_cikti) mevcut
FROM stok, malzeme
WHERE malzeme.kodu = stok.malzeme
GROUP BY malzeme.kritik_stok_miktari, malzeme.malzeme_cinsi
HAVING SUM (stok.miktar * stok.girdi_cikti) < malzeme.kritik_stok_miktari
Kod: Tümünü seç
SELECT malzeme_cinsi, SUM (mevcut) mevcut
FROM (SELECT malzeme.malzeme_cinsi, malzeme.malzeme_kodu,
malzeme.kritik_stok_miktari,
SUM (stok.miktar * stok.girdi_cikti) mevcut
FROM stok, malzeme
WHERE malzeme.kodu = stok.malzeme
GROUP BY malzeme.malzeme_cinsi,
malzeme.malzeme_kodu,
malzeme.kritik_stok_miktari
HAVING SUM (stok.miktar * stok.girdi_cikti) <
malzeme.kritik_stok_miktari)
GROUP BY malzeme_cinsi
Kolay gelsin,
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
bu soruyu veri tabanı sql bölümüne sorman daha iyi olurdu. moderator arkadaşlar taşıyacaktır sanırım. şu şekilde bir kod kullanmalısın.
select Malzeme.Malzeme_Cinsi,Malzeme.Kritik_Stok_Miktari
, (select sum(stok.Miktar*stok.Girdi_Cikti) as Mevcut from Stok where Stok.Malzeme=Malzeme.Kodu group by stok.Malzeme_kod) from Malzeme where Mevcut<Malzeme.Kritik_Stok_Miktari');
select Malzeme.Malzeme_Cinsi,Malzeme.Kritik_Stok_Miktari
, (select sum(stok.Miktar*stok.Girdi_Cikti) as Mevcut from Stok where Stok.Malzeme=Malzeme.Kodu group by stok.Malzeme_kod) from Malzeme where Mevcut<Malzeme.Kritik_Stok_Miktari');