Aynı tableda aynı bilgi uniondan daha iyi bir secenekle geli

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Aynı tableda aynı bilgi uniondan daha iyi bir secenekle geli

Mesaj gönderen musti »

s.a.

Bir table mız var

SQl sorguluyoruz, Query , view , sp fark etmez (hangi isi olur bilmedigimden ayri bir konu tabiki )

tablemizde
kod,borc,alacak,fisno var

istedigimiz

kodunun ilk uc karakterini almak ve bunumla baslıyanların toplamı
kodunu hepsi ile baslayanrını dahil etmek

bu iki islemi
union kulllanarak yapıyorum sorunum yok ama daha iyi bir yontem olurmu


table biraz buyuk soyle bir 20.000 satırlık
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merhaba.
Sorunuzdan tam olarak sorununuzu anlayamamakla birlikte (ki cümlelerinizde düşüklük söz konusu...) bunun için union kullanmaya gerek olmadığını, where şartında like kullanmak suretiyle istediğiniz işlemi yapabileceğinizi düşünüyorum.
Kolay gelsin.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

net anlatayım hocam

2 tane table var

1. table
kod,adı,turu

a001,ahmet,C
a001-0,ahmet in 0 ı,B
a001-0-1,Ahmetin 01 i, A
a001-0-2,Ahmetin 02 i, A

a002,mehmet,C
a002-0-1,mehmetin 01 i, A
a002-0-2,mehmet in02 i, A




2.table
kodu,borc,alacak
a001-0-1,10,20
a001-0-2,10,20
a002-0-1,10,20
a002-0-2,10,20



yapmak istedigim

TURU C,B,A olanları toplamlarını gostermek
yani


kodu,adi,Top.borc,Top.alacak

a001,ahmet,40,80 //// a001 ile baslayan ttipi c olanların toplamı
a001-0,ahmet in 0 ı,20,40 /// a001-0 ile başlayan tipi b olanların toplam
a001-0-1,Ahmetin 01 i,10,20 // tipi a olanları toplamı




.
..
.
..
.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bunun için inner join kullanmanız gerekli..Tablolar arası kod alanına göre join olmanız sorununuzu çözecektir..
Kolay gelsin.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

ya epeydir uzerinde calisyorum en son union la- yaptim
tek sıkıntım turune gore ayıramamak

yani sonucum dogru su b olmasa,

diger bir degişler
1.table olan kodlardan 2.table de olanlar kodların borc ve alacak toplamları ama tur Cve B olanlar 2.table de yoktur. sadece onlarla baslayanlar var ki (ben bun substring ile cozdum. )M olanların kendine aynen toplanacak, C ve B olanlar ise aranacak baslayan varsa toplanacak. yani bi ceşit ile başlayanların toplamı ve kendileninin toplamı
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Ben bildiğim yöntemi söyledim, tercih sizin...
Kolay gelsin.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

tamam hocam inner join diyorsun ama
ben tipi C olupda kodu baslayanları,tipi B olupta kodu başlayanların ve tipi A olup o kodun aynıların toplamını aynı query ile nasıl verileceği konusunda endiselerim var.

inner joinle sanırım olmuyor ama left join le birseyler cıkarmı bilmiyorum .

tsk ederim
.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Her iki tabloda da tablo iyileştirme adına kullanılan alan kodu..Bu alana join olduğunuzda where şartına da türünden hangisini istiyorsanız yazdığınızda istediğiniz sonucu alabilirsiniz sanırım.

Kod: Tümünü seç

Select Sum (Tutar) from tablo1 t1 inner join tablo2 t2 on (t1.kodu=t2.kodu) where Turu = 'C'...
gibi genel bir yapıyla bahsi geçen işlem yapılabilir..
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bu arada view etmek istediğiniz diğer alanları da ekleyerek gruplamanız gerekecektir..
Kolay gelsin..
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

sanırım ben olayı anlatamadım.
sizin yazdiginiz kodda zaten inner kullanmaya gerek yok .

benim dedigiğimde bir eşitlik yok baslayan var yani

neyse tsk ler
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Verdiğiniz örnekte tüm kodu alanlarının ilk 3 karakteri a00, bunu nasıl kurgulamayı düşünüyorsunuz?İlk mesajda bahsettiğim gibi Like ile yapılabilir ancak sanırım olayı ben yanlış anlıyorum.
Neyse kolay gelsin.
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

ilk 3 karakter her zaman sabit degil sabit olan turu C,B,A
haklısınız bende yanlis anlatmis olabilirim.
saten sp ile cozecem artık
Cevapla