iki tablo arasında binden çok left join bağlantı

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
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

iki tablo arasında binden çok left join bağlantı

Mesaj gönderen akuyumcu63 »

merhaba;
iki sorum olacaktı birincisi joinleri aşağıdaki gibi kullanamadım.

Kod: Tümünü seç

CREATE VIEW VWMUSTERICEKLIST(
  ID, CEKKOD, CEKNO, TIPI, ALCARIID, ALUNVANSIRKET, ALCARITARIH, VERCARIID, VERUNVANSIRKET, VERCARITARIH, VERBANKAID, VERBANKATARIH, ASILCIRO, ASILBORCLU, VADETARIHI,  BANKAADI, SUBEADI, SUBEKODU, HESAPNO, IBANNO, CEKTUTAR, CEKINYERI, CEKINDURUMU, ACIKLAMA,  CID)
AS
SELECT 
   TBLCEKKAYIT.ID, TBLCEKKAYIT.CEKKOD, TBLCEKKAYIT.CEKNO, TBLCEKKAYIT.TIPI, TBLCEKKAYIT.ALCARIID, TBLCARIKAYIT.UNVANSIRKET,  TBLCEKKAYIT.ALCARITARIH,   TBLCEKKAYIT.VERCARIID, TBLCARIKAYIT.UNVANSIRKET,   TBLCEKKAYIT.VERCARITARIH, TBLCEKKAYIT.VERBANKAID, TBLCEKKAYIT.VERBANKATARIH, TBLCEKKAYIT.ASILCIRO,  TBLCEKKAYIT.ASILBORCLU, TBLCEKKAYIT.VADETARIHI, TBLCEKKAYIT.BANKAADI, TBLCEKKAYIT.SUBEADI, TBLCEKKAYIT.SUBEKODU,  TBLCEKKAYIT.HESAPNO, TBLCEKKAYIT.IBANNO,TBLCEKKAYIT.CEKTUTAR, TBLCEKKAYIT.CEKINYERI, TBLCEKKAYIT.CEKINDURUMU, TBLCEKKAYIT.ACIKLAMA, TBLCARIKAYIT.ID
  FROM  
  TBLCEKKAYIT Left join TBLCARIKAYIT on TBLCEKKAYIT.ALCARIID=TBLCARIKAYIT.ID
  WHERE
  TBLCEKKAYIT.TIPI='M';
yukarıdaki kod yapısı çalışıyor. ilk join bağlantıdan sonra aşağıdaki gibi yapınca view çalışmıyor.

Kod: Tümünü seç

CREATE VIEW VWMUSTERICEKLIST(
  ID,  CEKKOD,  CEKNO,  TIPI,  ALCARIID,  ALUNVANSIRKET,  ALCARITARIH,  VERCARIID,  VERUNVANSIRKET,  VERCARITARIH,  VERBANKAID,  VERBANKATARIH,  ASILCIRO,  ASILBORCLU, VADETARIHI,  BANKAADI,  SUBEADI,  SUBEKODU,  HESAPNO,  IBANNO,  CEKTUTAR,  CEKINYERI,  CEKINDURUMU,  ACIKLAMA,  CID)
AS
SELECT 
   TBLCEKKAYIT.ID, TBLCEKKAYIT.CEKKOD, TBLCEKKAYIT.CEKNO, TBLCEKKAYIT.TIPI, TBLCEKKAYIT.ALCARIID, TBLCARIKAYIT.UNVANSIRKET, TBLCEKKAYIT.ALCARITARIH,    
   TBLCEKKAYIT.VERCARIID,  TBLCARIKAYIT.UNVANSIRKET, TBLCEKKAYIT.VERCARITARIH, TBLCEKKAYIT.VERBANKAID, TBLCEKKAYIT.VERBANKATARIH, TBLCEKKAYIT.ASILCIRO, 
   TBLCEKKAYIT.ASILBORCLU, TBLCEKKAYIT.VADETARIHI, TBLCEKKAYIT.BANKAADI, TBLCEKKAYIT.SUBEADI, TBLCEKKAYIT.SUBEKODU, TBLCEKKAYIT.HESAPNO, TBLCEKKAYIT.IBANNO, 
   TBLCEKKAYIT.CEKTUTAR, TBLCEKKAYIT.CEKINYERI, TBLCEKKAYIT.CEKINDURUMU, TBLCEKKAYIT.ACIKLAMA, TBLCARIKAYIT.ID  
FROM  
  TBLCEKKAYIT Left join TBLCARIKAYIT on TBLCEKKAYIT.ALCARIID=TBLCARIKAYIT.ID
  TBLCEKKAYIT Left join TBLCARIKAYIT on TBLCEKKAYIT.VERCARIID=TBLCARIKAYIT.ID
  WHERE
  TBLCEKKAYIT.TIPI='M';
ikinci sorum ise ÇEK TABLOSU nda CEKINDURUMU alanına P, B, C gibi değerler yazdırıyorum. yukarıda belirttiğim view içinde P yerine PORTFÖYDE, B yerine BANKADA, c yerine CARİDE değerlerini nasıl gösterebilirim.
İsteyen, yapabildiğinden daha fazlasını yapar.
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: iki tablo arasında binden çok left join bağlantı

Mesaj gönderen akuyumcu63 »

birinci soruyu
viewtopic.php?f=18&t=24528
yukarıdaki linkten faydalanarak aşağıdaki şekilde yaptım,

Kod: Tümünü seç

CREATE VIEW VWMUSTERICEKLIST(
  ID,
  CEKKOD,
  CEKNO,
  TIPI,
  ALCARIID,
  ALUNVANSIRKET,
  ALCARITARIH,
  VERCARIID,
  VERUNVANSIRKET,
  VERCARITARIH,
  VERBANKAID,
  BANKAADI,
  IBANNO,
  VERBANKATARIH,
  ASILCIRO,
  ASILBORCLU,
  VADETARIHI,
  CEKBANKAADI,
  CEKSUBEADI,
  CEKSUBEKODU,
  CEKHESAPNO,
  CEKIBANNO,
  CEKTUTAR,
  CEKINYERI,
  CEKINDURUMU,
  ACIKLAMA,
  CID,
  CARIKOD)
AS
SELECT 
   cek.ID, 
   cek.CEKKOD, 
   cek.CEKNO, 
   cek.TIPI, 
   cek.ALCARIID,
   Cari.UNVANSIRKET,
   cek.ALCARITARIH, 
   cek.VERCARIID,
   AltCari.UNVANSIRKET,
   cek.VERCARITARIH, 
   cek.VERBANKAID,
   Banka.BANKAADI,
   Banka.IBANNO,
   cek.VERBANKATARIH,
   cek.ASILCIRO, 
   cek.ASILBORCLU, 
   cek.VADETARIHI, 
   cek.BANKAADI,
   cek.SUBEADI, 
   cek.SUBEKODU, 
   cek.HESAPNO, 
   cek.IBANNO, 
   cek.CEKTUTAR,
   cek.CEKINYERI, 
   cek.CEKINDURUMU, 
   cek.ACIKLAMA,
   Cari.ID,
   Cari.CARIKOD
  FROM TBLCEKKAYIT AS cek
  	Left join TBLCARIKAYIT as Cari on (cek.ALCARIID=Cari.ID)
  	Left join TBLCARIKAYIT as AltCari on (cek.VERCARIID=AltCari.ID)
  	Left join TBLBNKHESAPKAYIT as Banka on (cek.VERBANKAID=Banka.ID)
  WHERE Cek.TIPI='M' 
  order by cek.ID, cek.ALCARITARIH;
şimdi sıra ikinci soruyu halletmeye, durmak yok yola devam.
İsteyen, yapabildiğinden daha fazlasını yapar.
Cevapla