Logo Destek

Logo Nostalji => GO => Konuyu başlatan: Koray Ü. - 25.09.2007, 12:30

Başlık: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: Koray Ü. - 25.09.2007, 12:30
Merhaba.
Malzemelerin eldeki stok miktarları ile tanımlı alış fiyatlarının çarpımını hesaplatarak ambarlardaki malzemelerin toplam değerlerini bulmak istiyorum.

Eldeki stokta problem yok:

SELECT     MALZEME.CODE, MALZEME.NAME, TOPLAM.ONHAND AS 'STOK MİKTARI'
FROM         LG_001_ITEMS MALZEME INNER JOIN
                      LG_001_02_GNTOTST TOPLAM ON TOPLAM.STOCKREF = MALZEME.LOGICALREF
WHERE   (TOPLAM.INVENNO = 0) AND (TOPLAM.ONHAND > 0)
ORDER BY CODE


Ancak fiyatları malzemeler ile eşleştiremedim. Fiyatlar  LG_001_PRCLIST tablosunda ve her malzeme için sadece bir tane alış fiyatı var. Ancak bazı fiyatlar ana birim için, bazıları 2. 3. birimler için girilmiş..

STOK AÇIKLAMASI       ELDEKİ STOK          ALIŞ FİYATI         STOK DEĞERİ
-------------------------        ------------------         ------------------        -------------------
A                                      B                                C                        D=B x C

şeklinde bir sorgu yazmam için yardımcı olursanız çok sevinirim...
Selamlar..
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: Koray Ü. - 27.09.2007, 14:26
baktım kimseden ses çıkmıyor, şöyle bir sorgu yazayım dedim:

SELECT
(SELECT MAL.CODE AS KODU, MAL.NAME AS AÇIKLAMA FROM LG_001_ITEMS MAL),
(SELECT HAREKET.ONHAND AS 'ELDEKİ STOK' FROM  LG_001_02_GNTOTST HAREKET),
(SELECT FIYAT.PRICE AS 'TANIMLI FIYAT'  FROM  LG_001_PRCLIST PRICE)
WHERE (HAREKET.STOCKREF = MAL.LOGICALREF) AND (PRICE.CARDREF=MAL.LOGICALREF) AND  (HAREKET.INVENNO = 0) AND (HAREKET.ONHAND > 0)
ORDER BY CODE

ama şu hatayı veriyor:
Yürütmede hata:
The column prefix 'FIYAT' does not match with a table name or alias name used in the query.
The column prefix 'HAREKET' does not match with a table name or alias name used in the query.
The column prefix 'MAL' does not match with a table name or alias name used in the query.
The column prefix 'PRICE' does not match with a table name or alias name used in the query.
The column prefix 'MAL' does not match with a table name or alias name used in the query.
The column prefix 'HAREKET' does not match with a table name or alias name used in the query.
The column prefix 'HAREKET' does not match with a table name or alias name used in the query.
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: memorphin - 27.09.2007, 16:00
SELECT
URUN.CODE AS 'ÜRÜN KODU',
URUN.NAME AS 'ÜRÜN ADI',
'GENEL  '= CASE WHEN (AMBARM.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR END,
'AMBAR 1'= CASE WHEN (AMBAR1.MIKTAR IS NULL) THEN '0' WHEN (AMBAR1.MIKTAR IS NOT NULL) THEN AMBAR1.MIKTAR END,
'AMBAR 2'= CASE WHEN (AMBAR2.MIKTAR IS NULL) THEN '0' WHEN (AMBAR2.MIKTAR IS NOT NULL) THEN AMBAR2.MIKTAR END,
'AMBAR 3'= CASE WHEN (AMBAR3.MIKTAR IS NULL) THEN '0' WHEN (AMBAR3.MIKTAR IS NOT NULL) THEN AMBAR3.MIKTAR END,
'AMBAR 4'= CASE WHEN (AMBAR4.MIKTAR IS NULL) THEN '0' WHEN (AMBAR4.MIKTAR IS NOT NULL) THEN AMBAR4.MIKTAR END,
'AMBAR 5'= CASE WHEN (AMBAR5.MIKTAR IS NULL) THEN '0' WHEN (AMBAR5.MIKTAR IS NOT NULL) THEN AMBAR5.MIKTAR END,
'A.FIYAT'= CASE WHEN (ALIS.MIKTAR IS NULL) THEN '0' WHEN (ALIS.MIKTAR IS NOT NULL) THEN ALIS.MIKTAR END,
'S.FIYAT'= CASE WHEN (SATIS.MIKTAR IS NULL) THEN '0' WHEN (SATIS.MIKTAR IS NOT NULL) THEN SATIS.MIKTAR END,
'A.DEGER'= CASE WHEN (AMBARM.MIKTAR * ALIS.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR * ALIS.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR * ALIS.MIKTAR END,
'S.DEGER'= CASE WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR * SATIS.MIKTAR END

FROM
{oj LG_FFF_ITEMS URUN
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=-1 GROUP BY STOCKREF)
AMBARM ON URUN.LOGICALREF = AMBARM.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=0 GROUP BY STOCKREF)
AMBAR1 ON URUN.LOGICALREF = AMBAR1.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=1 GROUP BY STOCKREF)
AMBAR2 ON URUN.LOGICALREF = AMBAR2.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=2 GROUP BY STOCKREF)
AMBAR3 ON URUN.LOGICALREF = AMBAR3.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=3 GROUP BY STOCKREF)
AMBAR4 ON URUN.LOGICALREF = AMBAR4.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=4 GROUP BY STOCKREF)
AMBAR5 ON URUN.LOGICALREF = AMBAR5.STOCKREF
LEFT JOIN ((SELECT MAX(PRICE) AS 'MIKTAR',CARDREF FROM LG_FFF_PRCLIST WHERE PTYPE=1 GROUP BY CARDREF))
ALIS ON URUN.LOGICALREF = ALIS.CARDREF
LEFT JOIN ((SELECT MAX(PRICE) AS 'MIKTAR',CARDREF FROM LG_FFF_PRCLIST WHERE PTYPE=2 GROUP BY CARDREF))
SATIS ON URUN.LOGICALREF = SATIS.CARDREF
}
WHERE URUN.CARDTYPE<>'22'
ORDER BY URUN.CODE
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: memorphin - 27.09.2007, 16:02
birden fazla ambar için yapmıştım ambar bağlantılarını silerseniz işinize yarayabilir
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: MehmetYavuz - 28.09.2007, 09:46
select    STOCKREF, ONHAND, ONHAND*ISNULl(PRICE,0) AS A
from    LG_001_01_GNTOTST TOTS
   LEFT JOIN LG_001_PRCLIST PRCLIST ON PRCLIST.CARDREF=TOTS.STOCKREF AND PRCLIST.PRIORITY=1 AND PRCLIST.PTYPE=1
WHERE    TOTS.INVENNO<>-1
   AND TOTS.ONHAND>0

Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: Koray Ü. - 29.09.2007, 10:13
Sayın Çiftçi,

gerçekten çok teşekkür ederim. Sorgunun sonucunu malzeme değer raporu ile kıyasladım, bire bir tutuyor... elinize, emeğinize sağlık.

yalnız, malzemenin birimini listeleyip, stok miktarı 0 olan malzemeleri de listelememesi için küçük bir ayar yapabilir miyiz?
selamlar...

Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: LsuErsoy - 29.09.2007, 10:26
hazırlamış olduğunuz sorgu için teşekkürler , oldukça yararlı bir çalışma olduğunu düşünüyorum.Bende TETS ettim , başarılı

Fakat benim bir önerim olacak...ilgili sorguya Birim fiyat Döviz cinsi , YTL ise aynı fiyat , değilse ilgili satış kuru ile çarpımı sonucu YTL fiyat şeklinde sütunlar ekleyebilirseniz..bir de en son satırda GENEL toplam aldırabilirseniz çok iyi olur...

kolay gelsin , iyi çalışmalar...
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: LsuErsoy - 29.09.2007, 10:34
SELECT
URUN.CODE AS 'ÜRÜN KODU',
URUN.NAME AS 'ÜRÜN ADI',
'GENEL  '= CASE WHEN (AMBARM.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR END,
'AMBAR 1'= CASE WHEN (AMBAR1.MIKTAR IS NULL) THEN '0' WHEN (AMBAR1.MIKTAR IS NOT NULL) THEN AMBAR1.MIKTAR END,
'AMBAR 2'= CASE WHEN (AMBAR2.MIKTAR IS NULL) THEN '0' WHEN (AMBAR2.MIKTAR IS NOT NULL) THEN AMBAR2.MIKTAR END,
'AMBAR 3'= CASE WHEN (AMBAR3.MIKTAR IS NULL) THEN '0' WHEN (AMBAR3.MIKTAR IS NOT NULL) THEN AMBAR3.MIKTAR END,
'AMBAR 4'= CASE WHEN (AMBAR4.MIKTAR IS NULL) THEN '0' WHEN (AMBAR4.MIKTAR IS NOT NULL) THEN AMBAR4.MIKTAR END,
'AMBAR 5'= CASE WHEN (AMBAR5.MIKTAR IS NULL) THEN '0' WHEN (AMBAR5.MIKTAR IS NOT NULL) THEN AMBAR5.MIKTAR END,
'A.FIYAT'= CASE WHEN (ALIS.MIKTAR IS NULL) THEN '0' WHEN (ALIS.MIKTAR IS NOT NULL) THEN ALIS.MIKTAR END,
'S.FIYAT'= CASE WHEN (SATIS.MIKTAR IS NULL) THEN '0' WHEN (SATIS.MIKTAR IS NOT NULL) THEN SATIS.MIKTAR END,
'A.DEGER'= CASE WHEN (AMBARM.MIKTAR * ALIS.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR * ALIS.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR * ALIS.MIKTAR END,
'S.DEGER'= CASE WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR * SATIS.MIKTAR END

FROM
{oj LG_FFF_ITEMS URUN
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=-1 GROUP BY STOCKREF)
AMBARM ON URUN.LOGICALREF = AMBARM.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=0 GROUP BY STOCKREF)
AMBAR1 ON URUN.LOGICALREF = AMBAR1.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=1 GROUP BY STOCKREF)
AMBAR2 ON URUN.LOGICALREF = AMBAR2.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=2 GROUP BY STOCKREF)
AMBAR3 ON URUN.LOGICALREF = AMBAR3.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=3 GROUP BY STOCKREF)
AMBAR4 ON URUN.LOGICALREF = AMBAR4.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=4 GROUP BY STOCKREF)
AMBAR5 ON URUN.LOGICALREF = AMBAR5.STOCKREF
LEFT JOIN ((SELECT MAX(PRICE) AS 'MIKTAR',CARDREF FROM LG_FFF_PRCLIST WHERE PTYPE=1 GROUP BY CARDREF))
ALIS ON URUN.LOGICALREF = ALIS.CARDREF
LEFT JOIN ((SELECT MAX(PRICE) AS 'MIKTAR',CARDREF FROM LG_FFF_PRCLIST WHERE PTYPE=2 GROUP BY CARDREF))
SATIS ON URUN.LOGICALREF = SATIS.CARDREF
}
WHERE URUN.CARDTYPE<>'22'
ORDER BY URUN.CODE


Merhabalar Bu sorguyu yazabilmek için ; sırası ile hangi adımları düşündünüz...yani kafanızda algoritmayı kurmak için bazı bilgilerden yararlanarak yargılar ürettiniz...yani önce şununla şunu ilişkilendirmeliyim , şuna göre gruplamalıyım (Nedeni?) , şuna göre toplatmalıyım gibi sorularınızı sorup cevpalarınıda verekrek ayrıntılı bir açıklama yapabilirseniz sevinirim...

FROM
{oj
LG_FFF_ITEMS URUN..........bu kodda OJ ifadesi neden kullanıldı ?...

INNER JOİN mantığı nedir ? gibi...

adım adım bu kodu açıklarsanız çok minnettar kalacağım...

kolay gelsin , iyi çalışmalar...
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: S.ÖNDER - 29.09.2007, 11:20
Merhabalar;
Lsuersoy kardeşime  katılıyorum bence de adım adım bu kod açıklanırsa bende çok memnun olurum ,
emeğini ve bilgisini paylaşan herkese teşekkürler ,
kolay gelsin...
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: Koray Ü. - 29.09.2007, 11:27
Eminim Sayın Çiftçi (memorphin) kurduğu mantığı açıklarken, sorguyu yazarken harcadığı emekten daha fazlasını harcayacak...

Ama böyle bir açıklama da birçok SQL meraklısının ufkunu açacaktır..
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: secil - 29.09.2007, 11:56
Böyle bir sorgu için açıklama zaman alacaktır ama mantığını öğrenmek nerden neyi çıkartabileceğimiz doğrultusunda bize örnek olacağını düşünüyorum...
                                                                  İyi Çalışmalar...
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: memorphin - 29.09.2007, 12:56
{oj
...
}
bu exceldeki microsoft querynin sorguyu anlaması için gerekli. o parametreler olsada olmasada vtyonet yada query analyzerde çalışır. fakat excel aktardığımda {oj gerekli oluyo.

ayrıca bu bi müşterime yazdığım sorguydu. müşterimin 5 farkı ambarı var. genel toplam, ambar1 ,,, 5 diye gidiyo. tüm abarların toplamı malzeme fiyat kartına göre çağırılıyo. kolay gelsin.
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: memorphin - 29.09.2007, 13:01
burada listelenen birim adettir o yüzden öyle bişi yapmadım. fakat UNISETREF alanını birimseti tablosuyla karşılaştırırsak adet'e ulaşırız.
ama bi de şu var hangi ürün adet hangi ürün paket koli çıkacak onlar belirlenmeli bence
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: LsuErsoy - 29.09.2007, 13:17
burada listelenen birim adettir o yüzden öyle bişi yapmadım. fakat UNISETREF alanını birimseti tablosuyla karşılaştırırsak adet'e ulaşırız.
ama bi de şu var hangi ürün adet hangi ürün paket koli çıkacak onlar belirlenmeli bence

Merhabalar ; şu ana kadar yorumlarınıza yeni yorumlar yapılmadığı için tekrar devreye girmek istedim.Benim toplam istemem belirli bir mantık gerektirmiyor...yani elma ile armut da olsa en altda bir toplam görmek isterim : )

Ama stokların birim setlerine göre indexlenmesi ve Her birim setde bir ARA TOPLAM alınabilse hiç de fena olmazdı :)

yazmış olduğunuz bu kod ve ilerleyen zaman diliminde yapacağınız ayrıntılı açıklamalar için şimdiden teşekkürederim , iyi çalışmalar..
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: memorphin - 29.09.2007, 14:43
ara toplam için excelin yeteneklerini kullanmamız lazım. ayrıca select'in sonuna yani
.....
'S.DEGER'= CASE WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR * SATIS.MIKTAR END,
'=TOPLA(C2:C65535)'
....
yazarak excele gelen sorgu sonucunu formul  olarakta yazdırabiliriz.
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: LsuErsoy - 02.10.2007, 14:28
Tekrar Merhabalar ; Aşağıdaki kodu (Firma No ve Dönem noları gerektiği gibi düzelttim.) , Enterprise Manager a kopyalayıp RUN ladığımda JPG deki hatayı alıyorum.

Query Analyzer a kopyalayıp RUN ladığımda ise gayet güzel çalışıyor.

Query i Enterprise Manager e kopyalayıp çalıştırmak isteyişimin nedeni ise Query nin METODOLOJİSİNİ anlamak.

Bu querynin her bir komut ve satırının ne işe yaradığını anlayabilirsem , oldukça büyük mesafe kat etmiş olacağımın farkındayım.

Kolay gelsin , iyi çalışmalar...

SELECT
URUN.CODE AS 'ÜRÜN KODU',
URUN.NAME AS 'ÜRÜN ADI',
'GENEL  '= CASE WHEN (AMBARM.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR END,
'AMBAR 1'= CASE WHEN (AMBAR1.MIKTAR IS NULL) THEN '0' WHEN (AMBAR1.MIKTAR IS NOT NULL) THEN AMBAR1.MIKTAR END,
'AMBAR 2'= CASE WHEN (AMBAR2.MIKTAR IS NULL) THEN '0' WHEN (AMBAR2.MIKTAR IS NOT NULL) THEN AMBAR2.MIKTAR END,
'AMBAR 3'= CASE WHEN (AMBAR3.MIKTAR IS NULL) THEN '0' WHEN (AMBAR3.MIKTAR IS NOT NULL) THEN AMBAR3.MIKTAR END,
'AMBAR 4'= CASE WHEN (AMBAR4.MIKTAR IS NULL) THEN '0' WHEN (AMBAR4.MIKTAR IS NOT NULL) THEN AMBAR4.MIKTAR END,
'AMBAR 5'= CASE WHEN (AMBAR5.MIKTAR IS NULL) THEN '0' WHEN (AMBAR5.MIKTAR IS NOT NULL) THEN AMBAR5.MIKTAR END,
'A.FIYAT'= CASE WHEN (ALIS.MIKTAR IS NULL) THEN '0' WHEN (ALIS.MIKTAR IS NOT NULL) THEN ALIS.MIKTAR END,
'S.FIYAT'= CASE WHEN (SATIS.MIKTAR IS NULL) THEN '0' WHEN (SATIS.MIKTAR IS NOT NULL) THEN SATIS.MIKTAR END,
'A.DEGER'= CASE WHEN (AMBARM.MIKTAR * ALIS.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR * ALIS.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR * ALIS.MIKTAR END,
'S.DEGER'= CASE WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NULL) THEN '0' WHEN (AMBARM.MIKTAR * SATIS.MIKTAR IS NOT NULL) THEN AMBARM.MIKTAR * SATIS.MIKTAR END

FROM
{oj LG_FFF_ITEMS URUN
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=-1 GROUP BY STOCKREF)
AMBARM ON URUN.LOGICALREF = AMBARM.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=0 GROUP BY STOCKREF)
AMBAR1 ON URUN.LOGICALREF = AMBAR1.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=1 GROUP BY STOCKREF)
AMBAR2 ON URUN.LOGICALREF = AMBAR2.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=2 GROUP BY STOCKREF)
AMBAR3 ON URUN.LOGICALREF = AMBAR3.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=3 GROUP BY STOCKREF)
AMBAR4 ON URUN.LOGICALREF = AMBAR4.STOCKREF
LEFT JOIN (SELECT SUM(ONHAND) MIKTAR,STOCKREF FROM LG_FFF_DD_STINVTOT WHERE INVENNO=4 GROUP BY STOCKREF)
AMBAR5 ON URUN.LOGICALREF = AMBAR5.STOCKREF
LEFT JOIN ((SELECT MAX(PRICE) AS 'MIKTAR',CARDREF FROM LG_FFF_PRCLIST WHERE PTYPE=1 GROUP BY CARDREF))
ALIS ON URUN.LOGICALREF = ALIS.CARDREF
LEFT JOIN ((SELECT MAX(PRICE) AS 'MIKTAR',CARDREF FROM LG_FFF_PRCLIST WHERE PTYPE=2 GROUP BY CARDREF))
SATIS ON URUN.LOGICALREF = SATIS.CARDREF
}
WHERE URUN.CARDTYPE<>'22'
ORDER BY URUN.CODE


Merhabalar Bu sorguyu yazabilmek için ; sırası ile hangi adımları düşündünüz...yani kafanızda algoritmayı kurmak için bazı bilgilerden yararlanarak yargılar ürettiniz...yani önce şununla şunu ilişkilendirmeliyim , şuna göre gruplamalıyım (Nedeni?) , şuna göre toplatmalıyım gibi sorularınızı sorup cevpalarınıda verekrek ayrıntılı bir açıklama yapabilirseniz sevinirim...

FROM
{oj
LG_FFF_ITEMS URUN..........bu kodda OJ ifadesi neden kullanıldı ?...

INNER JOİN mantığı nedir ? gibi...

adım adım bu kodu açıklarsanız çok minnettar kalacağım...

kolay gelsin , iyi çalışmalar...
Başlık: Ynt: SQL'de Eldeki Stok ve Fiyatlar...
Gönderen: Koray Ü. - 10.11.2007, 12:19
Şu konuyu biraz daha ısıtalım....  ::)

Hem Go'dan alınan malzeme değer raporunda, hem de Sayın Memorphin'in yazdığı sorguda şöyle bir hata var:

Malzemeler için girilen fiyat kartı şayet ana birim değil de, 2. veya 3.birim için tanımlanmışsa ne Go, ne de bu sorgu fiyatı ana birime dönüştürmeden hesaplıyor. Bu da inanılmaz hatalara yol açabiliyor.

Biraz daha açmak gerekirse;
Örneğin bir malzememiz var. Küp şeker diyelim. Birimleri paket ve koli. Her koli 25 paket ve ana birim de koli. Eğer siz alış fiyat kartını ana birim olan koli üzerinden değil de paket üzerinden tanımlarsanız rapor ana birim olan kolinin eldeki stok miktarı ile paket fiyatını çarpıyor. Ve çok vahim hatalar doğabiliyor.
Bu durumu Logo'ya bildirdiğimde
"Birim setlerini kontrol edin ve fiyat kartındaki "diğer birimlere çevrilebilir" kutusunu işaretleyin." dendi ama zaten bütün fiyatlar bu şekilde tanımlı.

Dolayısıyla ya bu sorguları düzenleyeceğiz, ya da fiyat kartlarını sadece ana birim üzerinden tanımlamak zorunda kalacağız....