bana biraz karışık gelen sql sorgusu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

bana biraz karışık gelen sql sorgusu

Mesaj gönderen boncapelo »

öncelikle kandiliniz mübarek olsun...
soruma gelince veritabanım firebird şimdi satis diye bir tablom var.
sql sorgusu şu şekilde olacak.verilen iki tarih aralığı ile satis listesinde bulunan kayıtları marka sı ve stoktipi alanları aynı olanları birkere listeleyecek ve toplamlarını yazacak.yani dunlop marka 10 tane ise dunlop marka ürünü bir kere listeleyecek ve yanına 10 yazacak.ben select distinc ile her kayıtı birkere gösterip toplamlarını gösterdim fakat tarih filtreleme işini ekleyemedim bu konuda bana yardımcı olursanız çok sevinirim.benim için çok önemli bir konu.
herkese kolay gelsin...
Allah Yardımcınız Olsun...
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

selam

Kod: Tümünü seç

ibdataset1.Close;
ibdataset1.SelectSQL.Clear;
ibdataset1.SelectSQL.Add('select marka,stokkodu,stoktipi,sum(toplanacakalan) from SATIS where stokkodu is not null');
ibdataset1.SelectSQL.Add('and tarih >='+#39+(dateedit1.text)+#39);
ibdataset1.SelectSQL.Add('and tarih <='+#39+(dateedit2.text)+#39);
ibdataset1.SelectSQL.Add('group by marka,stokkodu,stoktipi');
ibdataset1.Open;
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

hocam cevap için teşekkürler ben ibquery kullandığım için değiştirerek kendime uyguladım sorunsuz çalıştı.fakat işin raporlama kısmında rave ile rapor alıyorum burada hata veriyor adet kısmında hata veriyor.
hata:field dataview4.adet datetype expected:dtInteger datatype found:dtInt64 hata bu.bu hatayı sanırım biz adet alanlarının birkaç tanesinin toplamını aldığımız için oldu heralde çözebilirmiyiz.
Sagılar...
Allah Yardımcınız Olsun...
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam SQL sorgusu ile alakalı değil bu hata.hiç rave kullanmadım ama veri tiplerinde hata veriyor.hem ibquerynin hemde rave datasetinin fieldseditor'lerindeki bilgileri silip tekrar ekleyebilirsin.yada QReport ile dene bakalım hata veriyormu.
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

hocam dediğin gibi sql de sorun yok zaten.dedim ya sql sorunsuz çalışıyor diye.problem rave de ama bende yeni başladım raveye.qreport u da fazla kullanmadım.tam hatırlamıyorum nasıl oluyordu ama ibquery ile rapor oluştururken alanları aktif edemiyodum sanırım.yani sadece table içeriğindeki fields leri qreporta atabiliyodum.aynı ravede olduğu gibi.onun için qreportta da olsa yine çalışmıcak.yani ben yapamıcam.belki rave konusunda bilginiz vardır diye başka başlık açmaya gerek duymadım.forum kirliliği açısından.belki bilen arkadaş gelir.biraz sabırlı olup beklemek lazım...yardımlarınız için teşekkür ederim serkan hocam.
Saygılar...
Allah Yardımcınız Olsun...
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

serkan hocam.sql sorgusu ile ilgili bi sıkıntı var.ben raporlama kısmını excele aktararak çözdüm.sql sorununa gerince sanırım benim sorunu yanlış anlatmamdan kaynaklandı.şimdi hocam şuanki sorun şu.şimdi tarih aralığı yapmıştık ya tarih aralığını sorguluyodu tarih aralığını sorgularken sadece o tarih arasında ki satılan adeti toplucak bizim sorguda o tarih arasındakini listeleyip çıkarıyor fakat satılan bütün adetleri topluyor.yani istediğim tarih aralığında çıkardığı kayıtların adetini toplaması...
Saygılar...
Allah Yardımcınız Olsun...
..::ÖzSoft Computer Land & NetCity Internet Cafe::..
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

oluşturduğun sql cümlesini bir Memo içine alıp doğru oluşuyormu ilk olarak bunu kontrol et Memo da oluşan query i ise IBconsolda bir çalıştır bakalım ne olucak.

çünkü sql de problem yok gibi group by lar falan doğru yani..
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

pardon Sql de problem yok demişsin zaten o zaman Data da tanımlı adet alanının Tipi nedir. onu bir kontrol et derim.
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

SQL sorgusunda problem yok bu sql ile marka,stokkodu,stoktipi alanlarını seçip verdiğin iki tarih arasındaki satış rakamlarını topluyor.yani o tarih aralığının dışındaki satışları dikkate almıyor.senin kendine uyarladığın şekliyle forumda yazarsan iyi olur.birde verileri manuel olarak toplayıp iyice bir kontrol et bakalım.
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

Kod: Tümünü seç

ibquery1.Close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select tarih,urun,marka,sum(adet) ADET from SATIS where sira is not null');
ibquery1.SQL.Add('and tarih >='+#39+(suiedit1.text)+#39);
ibquery1.SQL.Add('and tarih <='+#39+(suiedit2.text)+#39);
ibquery1.SQL.Add('group by marka,tarih,urun');
ibquery1.Open;
hocam kod bu yanlız benim veritabanımda tarih kısmı date editler ile tarih girdiriyorum.aslında datimepicker ile girdirecektim ama alan tipini değiştiremedim yani text istiyodu...o yüzden öle yaptım sorun oradan kaynaklanıyor olabilir belki....
Saygılar...
Allah Yardımcınız Olsun...
..::ÖzSoft Computer Land & NetCity Internet Cafe::..
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

serkan hocam kod çalışıyormuş özür dilerim.ama bir sorun var bu iş çok karıştı söle anlatayım...

tarih urun marka satılan kalan
27.07.2006 Optik Cerceve DUNLOP 2
27.07.2006 Optik Cerceve DUNLOP 4
27.07.2006 Lens OEM 5
27.07.2006 Optik Cerceve DUNLOP 2
28.07.2006 Optik Cerceve DUNLOP 4

şimdi tarih aralığı sadece 27.07.2006 istiyorum bana çıkan sonuç bu

tarih urun marka satılan kalan
27.07.2006 Optik Cerceve DUNLOP 8
27.07.2006 Lens OEM 5

burada sorun yok zaten bu şekil istiyorum ama
27.07.2006 ile 28.07.2006 arası sorgu istiyorum bana şöyle çıkarıyor

tarih urun marka satılan kalan
27.07.2006 Optik Cerceve DUNLOP 8
27.07.2006 Lens DUNLOP 5
28.07.2006 Optik Cerceve DUNLOP 4


sonuc böyle çıkıyor ben bunu istemiyorum bu son kaydı da yukarıdakine ekleyecek aynı kayıt olduğu için yani aslında sorgu sonucu çıkan kayıtların tarihi önemli değil...
27.07.2006 ile 28.07.2006 arası aynı ürünlerden ne kadar satılmış bana onu göstersin ben onu istiyorum...
inşallah anlatabilmişimdir...
Saygılar...
Allah Yardımcınız Olsun...
..::ÖzSoft Computer Land & NetCity Internet Cafe::..
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

İlk olarak tarih i listeletmişsin sanıyorum group by da o şekilde ondan dolayı ilk olarak neyi listelersen ona göre sum yapılır.

kolay gelsin..
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

bu konuda SQL haklı sana sadece istediğini veriyor :)
neden sorgu sonucunda tarih alanını istiyorsunki. eğer doğru anladıysam iki tarih aralığında gruplama yapacaksan sana tarih alanı lazım değil. mesala 01.07.2006 ile
27.07.2006 tarihleri arasındaki kayıtları birleştirip tek tarih yaptığında tarih kolununa ne yazacak. grup mantığında bunu yapmaz sadece aynı günkü ürünleri birleştirir. raporun bir köşesine listelen tarih aralığını girersen bir problem kalmaz muhtemelen.

Kolay gelsin
boncapelo
Üye
Mesajlar: 49
Kayıt: 01 Tem 2005 02:28
Konum: Bursa
İletişim:

Mesaj gönderen boncapelo »

bütün hocalarıma teşekkür ederim...başta da demiştim tarih o kadar önemli değil diye.bende tarih kısmını kaldırdım listelemeden.sorun çözüldü allaha şükür.hepinizden tekrar allah razı olsun.
Saygılar...
Allah Yardımcınız Olsun...
..::ÖzSoft Computer Land & NetCity Internet Cafe::..
Cevapla