Oracle ile çalışıyorsanız ve bir tablonuzdaki kayıtlar arasında anahtarlar ile ilişki varsa ve siz bu bağlı kayıtlar arasında kayboluyor ve arasından birini çekip almak için procedure içinde boğuluyorsan CONNECT BY tam sana göre Connect by detayları ile ilgili


  • A
    • A.1
      • A.1.1
        • A.1.1.1
      • A.1.2
        • A.1.2.1
  • B
    • B.1
      • B.1.1
        • B.1.1.1
      • B.1.2
        • B.1.2.1

Bu şekilde kayıt hiyerarşisi olan bir tablo üzerinden şu şekilde kayıtlara ihtiyaç olabilir.
  •  A kaydına ait hiyerarşinin detayları
SELECT T.ID,T.REF_ID,T.DEGER,LEVEL
  FROM KATALOG t
CONNECT BY PRIOR T.ID = T.REF_ID
 START WITH T.ID= 1

  •  A kaydına ait hiyerarşinin detaylarının 3. yaprakları
SELECT  t.ID ,t.ref_id,t.deger,LEVEL
  FROM KATALOG t
   where level =3
CONNECT BY  PRIOR T.ID= T.REF_ID
 START WITH T.DEGER='A'
  •  Herhangi bir hiyerarşi detayının kök kaydı
SELECT max(t.ID) kEEP(DENSE_RANK FIRST ORDER BY LEVEL DESC),

       max(t.REF_ID) kEEP(DENSE_RANK FIRST ORDER BY LEVEL DESC),
       max(t.DEGER) kEEP(DENSE_RANK FIRST ORDER BY LEVEL DESC) 
  FROM KATALOG t
CONNECT BY T.ID = PRIOR T.REF_ID
START WITH T.ID = 12


    0 yorum :

    About

    seruhatto