sql giriş çıkış sorgusu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

sql giriş çıkış sorgusu

Mesaj gönderen erdogan_ozkaya »

Arkadaşlar,

Aşağıdaki kod ile ssatış detayı tablosunda nekadar giriş çıkış olmuş karmı zararmı ettiğini görüyordum sanıyordum :)
2 stok kartı var ama 4 tane gösteriyor neden olabilir acaba ?

Kod: Tümünü seç

SELECT   
SKT.Genel_Stok_Adi,
SKT.Genel_Aciklama,
SKT.BARKOD,
ALIS.SATIS_FIYATI,
SATIS.ALIS_FIYATI, 
 
ISNULL(SUM(CKN.Birim_Miktari),0) CIKAN,
ISNULL(SUM(GRN.Birim_Miktari),0) GIREN,   
(ISNULL(SUM(GRN.Birim_Miktari),0) - ISNULL(SUM(CKN.Birim_Miktari),0)) DEPO_KALAN,  



(ISNULL(SUM(ALIS.ALIS_FIYATI),0)*ISNULL(SUM(GRN.Birim_Miktari),0)) GIRIS_TOPLAM_TUTAR,   
(ISNULL(SUM(SATIS.SATIS_FIYATI),0)*ISNULL(SUM(CKN.Birim_Miktari),0)) CIKIS_TOPLAM_TUTAR,  
(ISNULL(SUM(SATIS.SATIS_FIYATI),0)*ISNULL(SUM(CKN.Birim_Miktari),0)-ISNULL(SUM(ALIS.ALIS_FIYATI),0) *  
ISNULL(SUM(GRN.Birim_Miktari),0)) KAR_ZARAR FROM STOK_KARTLARI SKT  

LEFT JOIN SATIS_FATURA_DETAY CKN ON CKN.BARKOD=SKT.BARKOD AND CKN.FIS_TIPI = 'SatisFaturasi'  
LEFT JOIN SATIS_FATURA_DETAY GRN ON GRN.BARKOD=SKT.BARKOD AND GRN.FIS_TIPI = 'AlisFaturasi'  
LEFT JOIN STOK_KARTLARI ALIS ON ALIS.ALIS_FIYATI<>''
LEFT JOIN STOK_KARTLARI SATIS ON SATIS.SATIS_FIYATI<>''
GROUP BY 
SKT.BARKOD,
SKT.Genel_Stok_Kodu,
SKT.BARKOD,
SKT.Genel_Stok_Adi,
SKT.Genel_Aciklama,
ALIS.SATIS_FIYATI,
SATIS.ALIS_FIYATI 

order by SKT.Genel_Stok_Adi  ASC 
hareketler,
Resim
stoklar
Resim
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: sql giriş çıkış sorgusu

Mesaj gönderen erdogan_ozkaya »

STOK KARTINDA ALIŞ FİYATI İLE SATIŞ FİYATINI AYNI YAPINCA DÜZELİYOR AMA ALIŞ VE SATIŞ FİYATI FARKLI :( NASIL SANIRIM FİYAT GRUPLAMASINDA BİR SIKINTI VAR
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: sql giriş çıkış sorgusu

Mesaj gönderen erdogan_ozkaya »

:))

tamam gördüm hatayı düzelttim

teşekkürler

GROUP BY
SKT.BARKOD,
SKT.Genel_Stok_Kodu,
SKT.BARKOD,
SKT.Genel_Stok_Adi,
SKT.Genel_Aciklama,
SKT.SATIS_FIYATI,
SKT.ALIS_FIYATI
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: sql giriş çıkış sorgusu

Mesaj gönderen erdogan_ozkaya »

:( HATALI KOD YARDIMCI OLABİLECEK ARKADAŞ VARMI ACABA ?
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: sql giriş çıkış sorgusu

Mesaj gönderen ihalilcoban »

gördüğüm kadarıyla Select kısmına yazdığın alanlarla group by kısmında yazdığın alanlar birbirini tutmuyor.

Kod: Tümünü seç

SELECT   
SKT.Genel_Stok_Adi,
SKT.Genel_Aciklama,
SKT.BARKOD,
ALIS.SATIS_FIYATI,
SATIS.ALIS_FIYATI, 
........
GROUP BY   
SKT.Genel_Stok_Adi,
SKT.Genel_Aciklama,
SKT.BARKOD,
ALIS.SATIS_FIYATI,
SATIS.ALIS_FIYATI
...... 
şeklinde olması lazım diye düşünüyorum.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: sql giriş çıkış sorgusu

Mesaj gönderen esistem »

Select ve group by kısımlarından
ALIS.SATIS_FIYATI,
SATIS.ALIS_FIYATI,

satırlarını çıkartırsan düzelir.
Zira bu değerlere göre gruplama yap diyorsun, oda farklı gördüğü her değer için ayrı gruplama yapıyor.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: sql giriş çıkış sorgusu

Mesaj gönderen esistem »

erdogan_ozkaya yazdı:Arkadaşlar,

Aşağıdaki kod ile ssatış detayı tablosunda nekadar giriş çıkış olmuş karmı zararmı ettiğini görüyordum sanıyordum :)
2 stok kartı var ama 4 tane gösteriyor neden olabilir acaba ?

Kod: Tümünü seç

SELECT   
FROM STOK_KARTLARI SKT  
LEFT JOIN STOK_KARTLARI ALIS ON ALIS.ALIS_FIYATI<>'' ????
LEFT JOIN STOK_KARTLARI SATIS ON SATIS.SATIS_FIYATI<>''  ?????
ayrıca zaten STOK_KARTLARI tablosundan veri çekiyorsun left join ile neden tekrar ilişkilendirdin ki? Birde SATIS.SATIF_FIYATI alanın float gibi bir tür değilmi neden <>'' kullanıyorsun? bunun yerine;

Kod: Tümünü seç

FROM STOK_KARTLARI SKT  
LEFT JOIN .....
WHERE ALIS.ALIS_FIYATI>0 OR SATIS.SATIS_FIYATI>0
demen yeterli olacaktır. Tabi tabloların benim anladığım şekilde ise.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: sql giriş çıkış sorgusu

Mesaj gönderen erdogan_ozkaya »

evet ya eskiden fiyat listesinden çekiyordu kaldırmıştım. nese düzeldi şimdi :)
son hali aşağıdaki gibi işine yarayan olur belki :)

Kod: Tümünü seç

procedure TSTOK_KAR_ZARAR_ANALIZI.btn1Click(Sender: TObject);
begin
qryKAR_ZARAR_DB.Close;  
 qryKAR_ZARAR_DB.SQL.Clear;
 qryKAR_ZARAR_DB.SQL.Add(' SELECT SKT.Stok_ID,SKT.BARKOD, SKT.Genel_Stok_Kodu, SKT.Genel_Stok_Adi, SKT.Genel_Aciklama, '
                         +' SKT.SATIS_FIYATI,SKT.SATIS_PARA_BIRIMI, SKT.ALIS_FIYATI ,   SKT.ALIS_PARA_BIRIMI, '
                         +' ISNULL(SUM(GRN.Birim_Miktari),0) GIREN,     ISNULL(SUM(CKN.Birim_Miktari),0) CIKAN, '
                         +' (ISNULL(SUM(GRN.Birim_Miktari),0) - ISNULL(SUM(CKN.Birim_Miktari),0)) KALAN  FROM STOK_KARTLARI SKT ' );



 qryKAR_ZARAR_DB.SQL.Add(' LEFT JOIN SATIS_FATURA_DETAY CKN ON CKN.BARKOD=SKT.BARKOD AND CKN.FIS_TIPI  = '+#39+'SatisFaturasi'+#39+' and CKN.Cikis_Tarihi>=:tar1 and CKN.Cikis_Tarihi<=:tar2 ');

                        if DEPO_KODU_TEXT.Text<>'' then
                         qryKAR_ZARAR_DB.SQL.Add(' and CKN.Depo_Kodu='+#39+DEPO_KODU_TEXT.Text+#39+'');
                         if CARI_KOD_TEXT.Text<>'' then
                         qryKAR_ZARAR_DB.SQL.Add('  and CKN.Cari_Kart_ID='+#39+CARI_KOD_TEXT.Text+#39+'');

 qryKAR_ZARAR_DB.SQL.Add(' LEFT JOIN SATIS_FATURA_DETAY GRN ON GRN.BARKOD=SKT.BARKOD AND GRN.FIS_TIPI = '+#39+'AlisFaturasi'+#39+' and GRN.Cikis_Tarihi>=:tar3 and GRN.Cikis_Tarihi<=:tar4 ');


                         if DEPO_KODU_TEXT.Text<>'' then
                         qryKAR_ZARAR_DB.SQL.Add(' and CKN.Depo_Kodu='+#39+DEPO_KODU_TEXT.Text+#39+'');

                         if CARI_KOD_TEXT.Text<>'' then
                         qryKAR_ZARAR_DB.SQL.Add('  and CKN.Cari_Kart_ID='+#39+CARI_KOD_TEXT.Text+#39+'');







 qryKAR_ZARAR_DB.SQL.Add(' GROUP BY SKT.Stok_ID,SKT.BARKOD,SKT.Genel_Stok_Kodu,SKT.Genel_Stok_Adi,SKT.Genel_Aciklama,SKT.SATIS_FIYATI,SKT.SATIS_PARA_BIRIMI,  SKT.ALIS_FIYATI,SKT.ALIS_PARA_BIRIMI  '
                        +' order by SKT.Stok_ID  DESC  ' );

                        qryKAR_ZARAR_DB.Parameters.ParamByName('tar1').Value:=StrToDate(DateToStr(dtp1.Date));
                        qryKAR_ZARAR_DB.Parameters.ParamByName('tar2').Value:=StrToDate(DateToStr(dtp2.Date));
                        qryKAR_ZARAR_DB.Parameters.ParamByName('tar3').Value:=StrToDate(DateToStr(dtp1.Date));
                        qryKAR_ZARAR_DB.Parameters.ParamByName('tar4').Value:=StrToDate(DateToStr(dtp2.Date));

   qryKAR_ZARAR_DB.Open;
end;
Cevapla