SQL Sorgu problemi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

SQL Sorgu problemi

Mesaj gönderen mrtblt »

Arkadaslar soyle bir tablom var.

Kod: Tümünü seç

CREATE TABLE SIP_DETAY (
    SIPCODE      VARCHAR(10),
    ITEMCODE     VARCHAR(10),
    RENK         VARCHAR(35),
    SET_MIKTAR   INTEGER,
    TOPLAM_ADET  INTEGER,
    TUTAR        NUMERIC(15,2),
    VAT          NUMERIC(15,2),
    SATIR_NET    NUMERIC(15,2)
);
itemcode ve renk unique degil yani bircok kayitta tekrar durumlari var
farkli itemcode lar icin ayni renk olabilmekte

yani sari hem 270250 hemde 276450 itemcode degerine sahip kayitlarda olabilmekte. Ve 270250 itemcode icin hem sari hem kirmizi hemde yesil olabilmekte. yani sunun gibi bisey


270250 sari 15
270250 mavi 8
276450 sari 41
276450 yesil 12

vs....

gordugunuz gibi sari burada her iki kodda da var
ayni zamanda herkodun bir cok renk alternatifide olabilir



Burada oyle bir sorgu olusturmak istiyorum ki bu sorgu bana herkedun renkleri icin toplam_adet alaninin degerini verecek.
Burada eger tek kritere gore toplam aldirsa idik distinct ile bunu cozmek kolay olabilirdi ama sanirim basit bi distinct yazamayiz cunku sorgu itemcode+renk bir butun olarak dusunup ona gore distinct bir toplam alacak.
Umarim derdimi anlatabilmisimdir.
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

arkadaslarimdan hala yardim beklemekteyim....
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Yaptim. Aslinda basit biseymis.

Kod: Tümünü seç

select itemcode, renk, sum(toplam_adet) as tplm from sip_detay group by itemcode, renk
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

süpersin :bravo:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mrtblt
Üye
Mesajlar: 222
Kayıt: 02 Tem 2007 05:13

Mesaj gönderen mrtblt »

Aslinda konu ile alakasi yok ama sana bisey sormak istiyorum.

Kod: Tümünü seç

procedure Tdm.ds_expsbjDataChange(Sender: TObject; Field: TField);
begin
  tbl_expsbj.Transaction.Commit;
  tbl_expsbj.Active:=true;
end;
Bu kodu datasource'un ondatachange eventi icerisine yazdigimda program acilmiyor ve kilitleniyor. Derlerken bi sorun yok ama acilirken kilitleniyor
nedeni ne olabilir?
Bu kodu yazmak istememin sebebi yeni kayitlarin programa ackapa yapmaya gerek kalmadan veri tabanina fiziksel yazilmis olmasini saglamak.
Bunun yapmak istedigimin disinda baska bir yol varsa o oneriyede sevinirim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
çünkü döngüye giriyor
commit ettikten sonra active i true yaptığın zaman datachange olayı tetikleniyor oda commit ediyor sonra active true oluyor sonra datacahange......
böyle devam edip gidiyor.
zannımca bundan dolayı kilitleniyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

kodu datachange olayına değil de
afterpost ve afterdelete eventlerine yazın.
yalnız
tbl_expsbj.Transaction.Commit;
yerine
tbl_expsbj.Transaction.Commitretaining;
yapın ve
tbl_expsbj.Active:=true satırını kaldırın
Cevapla