ORKESTRA

ORKESTRA

  orkestra orkestra.com.tr
  Sohbet   İndirme Merkezi

join Komutu İle Tabloların Birleştirilmesi

Bu aşamada ise Cari tabloyla ilişkili olan diğer tablolardan veri çağırmayı göreceğiz.
Mesela Cari firmanın para birimini, daha önceden tanımlı olan “Para Birimi” (Currency) tablosundan çağırmak için join  komutu kullanılır.

İlk önce join, left join, inner join farkını belirtelim.
inner join ve join  aynı anlamdadır ve kullanımı aynıdır. Onun için bundan sonra join yerine inner join kelimesini kullanacağız.
inner join  ile left join in şöyle bir farkı var. inner join ile başka tabloyu birleştirdiğimizde eğer çağırdığımız tablodaki ilgili hücre değeri null ise asıl tablodan da o satırı listeleme ekranına getirmez. Veri kaybına sebep olur. Aynı tabloyu left join  ile birleştirdiğimizde ilgili hücre değeri boş olsa bile o satırı listeleme ekranına getirir, hücre değeri ise boş görünür. inner join komutu, çağrılan tablodaki bütün hücre değerleri doluysa (doldurulması zorunlu alanlar için) kullanılabilir, tercih kullanıcıya kalmıştır.

select 
cari.code as CARI_KOD,
cari.description as CARI_ACIKLAMA,
doviz.code as DOVIZ
from FinParty cari
inner join cari.currency doviz

Eğer komutlar bu şekilde yazılırsa program artık ilgili cari (FinParty) ile para birimi (Currency) tablosunun bağlantısını kuracak ve istediğimiz bilgiyi artık doviz tablosundan çağırmamızı sağlayacaktır.
Yukarıdaki şekliyle inner join komutunun çıktıları aşağıdaki gibi olur.

'inner join' Komutunun Kullanımı

Görüldüğü gibi döviz birimi olan veriler gelir diğer veriler kaybolur. Halbuki biz değer girilmemiş olsa bile o hücreleri boş olarak görmek istiyoruz.
Örneğin Ürün/Hizmet Kartları için bir sorgu yazılırken doldurulması zorunlu olan 'KDV' yada 'Miktar Birimi' bilgisi çağrılacaksa inner join  kullanılabilir. Ya da kullanıcı sadece dolu olan değerleri görmek de isteyebilir.

Aynı komutlar aşağıdaki gibi her şey aynı sadece inner join yerine left join yazılarak tekrar sorgulanırsa, sonuçta bütün satırlar listelenecek. DOVIZ değeri olmayanlar ise boş olarak gelecektir.

select 
cari.code as CARI_KOD,
cari.description as CARI_ACIKLAMA,
doviz.code as DOVIZ
from FinParty cari
left join cari.currency doviz

Sorgu bu şekliyle yazılırsa çıktısı aşağıdaki gibi olacaktır.

'left join' Komutunun Kullanımı

Bu şekilde bağlı olan istediğimiz kadar tabloyu, ana tabloya ekleyerek içlerinden istediğimiz veriyi çağırabiliriz.

select 
cari.code as CARI_KOD,
cari.description as CARI_ACIKLAMA,
toplam.postedNet as NET_BAKIYE,
kurum.code as KURUM_KODU,
kurum.description as KURUM_ACIKLAMASI,
doviz.code as DOVIZ
from FinParty cari
left join cari.periodTotal as toplam
left join cari.entity as kurum
left join cari.currency as doviz

Burada sırasıyla;
left join cari.periodTotal as toplam
yazılarak “Cari”nin “Dönem Toplam”ı "toplam" olarak tanımlanmış ve yukarıda
toplam.postedNet as NET_BAKIYE
yazılarak ilgili Cari’nin “Net Bakiye”si sütunlara çağrılmış oluyor.
Aynı işlemler Kurum ve Döviz Bilgileri için de yapılmış ve sorguda görüntülenmiştir.

Bu sorguyla da aşağıdaki çıktı elde edilmektedir.

Aşağıdaki gibi istediğimiz kadar tabloyu birbirine ekleyerek aradan istediğimiz tablonun, istediğimiz verisini sorgulayabiliriz.
select

from FinParty cari
left join cari.currency as doviz
left join cari.periodTotal as toplam
left join toplam.period as donem
left join donem.txCurrency islem_para_birim
left join islem_para_birim.creatorUser olusturan_kisi
left join olusturan_kisi.groups as grup
left join grup.rights yetki_paketi