sql

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: sql

Mesaj gönderen Vital »

unicorn inner joini denedim oda ayni istedigimi vermiyor

select urunadi, urunkodu, sum(miktari) as total
from ( select urunadi, urunkodu, miktari from giris
union all select urunadi, urunkodu, -miktari from cikis) a
group by urunadi, urunkodu

union ile bu kodda bi hata var mi ?istedigimi vermesi lazimö ama olmuıyor

ve eger bi stok tablosu olusturursam kayit lari db ye nasil yazmam gerekiyor yani yine iki tablosunu farkını alarak yazmam gerekecek nasil ve hangi yontemler

tek tabloda birlestirsem kullanıcı girismi yapti cikismi nasil anlicam ve sorgulaticam

tskler.
Garibanus
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: sql

Mesaj gönderen conari »

Union kullanımına örnekler var sitede.

Kod: Tümünü seç

Select kod, urun, miktar, case when miktar > 0 then 'G' else '' end as GCTUR from gtablo 
UNION 
Select kod, urun, miktar, case when miktar > 0 then 'C' else '' end GCTUR from ctablo 
tüm fieldların özellikleri aynı olmalıdır. Bu nu bir sql de dene, Sonra bir view oluştur ve raporla.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: sql

Mesaj gönderen Vital »

valla ustad bu kodun dogruyu vermesi gerekir diye dusunuyorum fakat hatalı hesaplıyor
ibquery1.sql.add('select giris.urunadi, sum(giris.miktariadeti)-sum(cikis.miktariadeti)as total from giris left outer join cikis on giris.urunkodu=cikis.urunkodu group by giris.urunadi ');

tek kayitta sorun yok ama birden fazla malzeme cikisi yapildiginda bu sorunu cikariyor.kullanici a malzemesinden bugun 10 ekleyerbilir 1 hafta sonra o malzemeden tekrar geldiginde 6 daha ekler yeni kayit gibi tabloya cikis icin kullanici a urununden 5 parca bugun harciyaca(5 azaltacak) 10 gun sonra gelip tekrar yeni satirda 3 azaltacak.her azaltmaya yeni kayit daha sonra urun kodlarin dan parcalarin toplamini aliyor iki tabloda sonrada cikariyor.

sastim kaldim yahu
Garibanus
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: sql

Mesaj gönderen conari »

Tekrardan hatırlatayım FB için bir şey diyemiyeceğim lakin sorgunda sadece giriş tablosunda ki isimleri çekmişsin. bu sorguya göre girişi olmayıp çıkışı olan ürünler listelenmez yani - stokları göremezsin.

Eğer istediğin tarih detaysız, sade bakiye ise bir tablo daha oluştur bakiye tablosu olsun ve giriş ve çıkışlarda bu tabloyu bir trigger ile yaz. Raporlarınıda burdan çek.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: sql

Mesaj gönderen Vital »

conari union u da denedim hesaplama yanlis yinede ama neden hesaplamayı yanlıs yaptıgını buldum ama hala cozumu bulamadim

soyleki
giris table
adi miktari
a 3
b 5
b 4
a 8 olsun

cikis table
adi miktari
b 3
a 5
olsun

bu soyle hesapliyor giris table deki her sayidan cikis table de ki sayiyi cikariyor yani a urunu icin (3-5+8-5=1 dogal olarak yanlis hesapliyor.once iki tablodaki kayitlarin miktarlarinin toplamini almiyor.giris table deki her kayittan cikis tabledeki her kaydi ayri ayri cikarma islemi yapiyor.a urunu icin 3 ten 5 cikardı sonra 8 den 5 i cikardi kalani topladi dogru olmasi gereken once giris tabledeki toplamı alacak sonra cikis tablede ki toplamı daha sonra ikisini birbirinden cikaracak.yani a urunu icin dogru olan (3+8-5=6) olmalı.denedim dedigim sekilde hesaplama yapiyor.

bunu asmanın bir yolu var mi? (distinc isimi gorurmu).

tskler.
Garibanus
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: sql

Mesaj gönderen Vital »

tskler conari unicorn ve diger arkadaslar

sorunu su sekilde cozdum
select urunadi,sum(miktariadeti) as total from(select urunadi,miktariadeti from giris union all select urunadi,-miktariadeti from cikis) a group by urunadi
bayagi bi karmasik yapi kullanmistim meger ne basitmis hehe
simdilik sorun yok
cok tskler arkadaslar.
Garibanus
Vital
Üye
Mesajlar: 280
Kayıt: 01 Oca 2008 08:50

Re: sql

Mesaj gönderen Vital »

tskler arkadaslar aşağıdaki kod ile simdilik cozdum sorunu

('select giris.urunadi, sum(giris.miktariadeti)-sum(cikis.miktariadeti)as total from giris left outer join cikis on giris.urunkodu=cikis.urunkodu group by giris.urunadi ');// union all select cikis.urunadi,cikis.urunkodu from cikis group by giris.urunadi');

yardimlariniz icin tskler.
Garibanus
Cevapla