ORKESTRA

ORKESTRA

  orkestra orkestra.com.tr
  Sohbet   İndirme Merkezi

Self Join aynı tablonun aynı sorgu içerisinde birden fazla çağrılması ve verilerin karışmaması için yapılır. Buradaki kullanım örnek olarak anlatılmıştır. Yapılan örnek tamamen kullanıcının konuyu kavraması için verilmiştir.

Self Join’in kullanımı daha mantıklı bir biçimde SQL Sorgularında Özellik Değer Setleri konusunda işlenecektir.

select 
cari.reference as CARI_KAYIT_NO,
cari.code as CARI_KOD,
cari.description as CARI_ACIKLAMA,
toplam_xx.postedNet as NET_BAKIYE,
yerel_toplam_xx.postedNet as NET_BAKIYE_TL,
peryod_xx.code as DONEM_ADI,
kurum_xx.code as KURUM,
case when doviz_xx.reference > 0
then doviz_xx.code else 'TL' end as DOVIZ
from FinParty cari, FinParty cari_xx
left join cari_xx.currency as doviz_xx
left join cari_xx.periodLTotal as yerel_toplam_xx
left join cari_xx.periodTotal as toplam_xx
left join yerel_toplam_xx.period as peryod_xx
left join cari_xx.entity as kurum_xx
where kurum_xx.reference = :entity_reference
and cari.reference = cari_xx.reference
order by yerel_toplam_xx.postedNet desc

Bu sorgu incelendiğinde from komutundan sonra FinParty tablosu 2 kere çağrılmış ve birine cari diğerine cari_xx adı verilmiştir.
Sorgunun sonunda where komutundan sonra iki farklı cari tablosunun reference (kayıt no) değerleri eşitlenmiştir. Böylece farklı tablolardan veriler çağrılsa da hata olmayacak sorgu bu eşitlik sayesinde doğru verileri bize gösterecektir.

Eğer bu eşitlik yazılmasaydı sorgu yine çalışacaktı ama getirdiği veriler hatalı olacaktı. Dolayısıyla self join ya da implicit join yapılırken doğru referans değerlerinin eşitlenmesi çok önemlidir. Sorgunun çıktısı aşağıdaki gibidir.

Self Join - Örnek