Sql ciler yardım pls

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
modigant
Üye
Mesajlar: 40
Kayıt: 08 Mar 2008 01:35

Sql ciler yardım pls

Mesaj gönderen modigant »

Stok otomasyonu üzerine proje geliştiyorum. Stok tablomdan stokta mevcut ürün sayılarını çıkarmam lazım. Tabloda durum diye bir fieldım var. Buraya gelen değer 0 ise stoğa girdi yapılmış, 1 ise stoktan çıktı yapılmış anlamına geliyor. Adet alanında stoğa ne kadar girdi yapılmış yada çıktı yapılmış onlar görünmekte. İstediğim stokta mevcut ürün sayısını bulma. Yani yapacağım işlem sorgunun içinde sum(adet) fonksiyonu. Fakat bunu yaptığımda bütün genelleme sum işlemi yapıyor. Yani bütün barkod numaralarına (bütün ürünlere) aynı sum değeri döndürüyor. Distinct ile barkod numaralarını bir kere saydırıp;

Kod: Tümünü seç

Select distinct barkod_no,((select sum(adet) from stok where durum=0 and barkod_no='12300000000') - (select sum(adet) from stok where durum=1and barkod_no='1230000000000')) as mevcut from stok where barkod_no='1230000000000'


yaptığımda sorgu sadece bu ürün için istediğim değeri döndürüyor.

Bunu geneline nasıl yaptırırım? Yardımlarınızı bekliyorum. Şimdiden teşekkürler...
Sular yükselince, balıklar karıncaları yer...Sular çekilince de karıncalar balıkları...Kimse bugünkü üstünlüğüne ve gücüne güvenmemelidir....
Çünkü kimin kimi yiyeceğine.. "Suyun Akışı Karar Verir..."
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Sql ciler yardım pls

Mesaj gönderen unicorn64 »

Kod: Tümünü seç

Select barkod_no,sum((case durum when 0 then adet else 0 end) - (case durum when 1 then adet else 0 end)) as bakiye from stok group by barkod_no
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
modigant
Üye
Mesajlar: 40
Kayıt: 08 Mar 2008 01:35

Re: Sql ciler yardım pls

Mesaj gönderen modigant »

Çok saol hocam. Sql de case kullanımı hakkında hiç bir bilgim yoktu. Sayende bir şeyi daha öğrenmiş oldum. Zaman ayırdığın için teşekkürler..
Sular yükselince, balıklar karıncaları yer...Sular çekilince de karıncalar balıkları...Kimse bugünkü üstünlüğüne ve gücüne güvenmemelidir....
Çünkü kimin kimi yiyeceğine.. "Suyun Akışı Karar Verir..."
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Re: Sql ciler yardım pls

Mesaj gönderen ofenX »

Merhaba,
modigant yazdı:Tabloda durum diye bir fieldım var. Buraya gelen değer 0 ise stoğa girdi yapılmış, 1 ise stoktan çıktı yapılmış anlamına geliyor.
Bir ara aklıma geldi. Giriş çıkışla ilgili bir şey yaparsam (stok giriş çıkışı da olabilir, cari hesap tahsilat ödeme de olabilir)
Girişi normal rakam girerim. Çıkışı da (-1) ile çarparım. Giriş çıkış toplamlarını alırken bu girişti bu çıkıştı diye dert etmem. Çünkü toplamını alınca + - den dolayı zaten hesaplanmış olur. diye düşünüyordum.
Örneğin
X malı
10 adet girişi ilgili alan 10 olarak yazdık.
5 adet çıkış ilgili alana 5*-1 =-5 olarak yazdık.
Duruma bakınca sum aldığımızda 10-5=5 çıkacaktır.

Böyle bir şeyi deneyen oldu mu acaba?

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
modigant
Üye
Mesajlar: 40
Kayıt: 08 Mar 2008 01:35

Re: Sql ciler yardım pls

Mesaj gönderen modigant »

bahsettiğin şekildede olur sorun değilde benim sorunum sum fonksiyonunu geneline uygulamakmış Onu da saolsun yukarda arkadaşımız çözdü.

Şimdi bir sorum daha var. Peki ben bu sorguda mevcut alanı 0 oluyorsa sorgu çıktısında gösterme nasıl derim?

Kod: Tümünü seç

Select distinct stok.barkod_no,stok.urun_cesit,urunler.urun_marka,urunler.urun_model,
(stok.kdvli_fiyat+' '+stok.fiyat_turu) as fiyati,
sum((case durum when 0 then adet else 0 end) - (case durum when 1 then adet else 0 end)) as mevcut
from stok,urunler
where stok.barkod_no=urunler.barkod_no
group by stok.barkod_no,stok.urun_cesit,urunler.urun_marka,urunler.urun_model,stok.kdvli_fiyat,stok.fiyat_turu
Şimdiden teşekkür ederim..
Sular yükselince, balıklar karıncaları yer...Sular çekilince de karıncalar balıkları...Kimse bugünkü üstünlüğüne ve gücüne güvenmemelidir....
Çünkü kimin kimi yiyeceğine.. "Suyun Akışı Karar Verir..."
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Sql ciler yardım pls

Mesaj gönderen conari »

Bakiye için

Kod: Tümünü seç

sum(case when durum = 0 then adet else -adet end)
Yeterlidir.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Sql ciler yardım pls

Mesaj gönderen unicorn64 »

modigant yazdı:bahsettiğin şekildede olur sorun değilde benim sorunum sum fonksiyonunu geneline uygulamakmış Onu da saolsun yukarda arkadaşımız çözdü.

Şimdi bir sorum daha var. Peki ben bu sorguda mevcut alanı 0 oluyorsa sorgu çıktısında gösterme nasıl derim?

Kod: Tümünü seç

Select distinct stok.barkod_no,stok.urun_cesit,urunler.urun_marka,urunler.urun_model,
(stok.kdvli_fiyat+' '+stok.fiyat_turu) as fiyati,
sum((case durum when 0 then adet else 0 end) - (case durum when 1 then adet else 0 end)) as mevcut
from stok,urunler
where stok.barkod_no=urunler.barkod_no
group by stok.barkod_no,stok.urun_cesit,urunler.urun_marka,urunler.urun_model,stok.kdvli_fiyat,stok.fiyat_turu
Şimdiden teşekkür ederim..

bkz. having :ara
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Cevapla