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.
sql
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: sql
Union kullanımına örnekler var sitede.
tüm fieldların özellikleri aynı olmalıdır. Bu nu bir sql de dene, Sonra bir view oluştur ve raporla.
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
Bir kelimenin anlamını öğretsen bile yeter..



Re: sql
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
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
Re: sql
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.
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..



Re: sql
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.
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
Re: sql
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.
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
Re: sql
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.
('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