Merhabalar , Bu yazımda Oracle PL/SQL de Hiyerarşik yapılar için kolaylık sağlayan CONNECT BY ifadesini örnekle açıklamaya çalışacağım

Hiyerarşik yapı , Ağaç yapısı (tree) şeklinde olan  Örneğin , Web sayfalarındaki Menüler gibi  Ana Menü altında birçok menü her birinin altında farklı menüler veya Şirket içi hiyerarşi çalışan –> çalışanın yöneticisi v.s. , Bu işlem için birden fazla yapı kullanabiliriz , LOOP ile Recursive fonksiyonlar ile mesela , fakat PL/SQL de işimizi çok kolaylaştıran CONNECT BY ifadesi mevcut.

CONNECT BY ifadesi ile yapacağımız örnekte en alt hiyerarşideki veriyi verip en üste kadar olan listeyi alacağız:

Örneğimizde Kullanacağımız Menü Hiyerarşisi :

screenshot_2

Sorgumuzda kullanacağımız ifadelerin kısaca açıklayayım :

CONNECT BY : Hiyerarşi bağlantısını belirtir , yani parent-child , üst – ast ilişkisi ni belirten sütunlar ı ilişkilendirir.

START WITH : Sorgulayacağımız hiyerarşinin hangi kısımdan , kökten başlayacağını belirtmek için.

PRIOR : Hiyerarşinin ilerleyeceği yönü belirtmek için kullanılır.

Örneğimizde kullanmak için bir tablo örneği scripti :

Oluşan Tablomuzda Id si 11 olan menüden Ana menüye olan hiyerarşi listesini sorgulayacağız :

screenshot_3

Sonuç :

screenshot_4

Kısaca ilk başta anlatığım ifadeleri örnek sorgu üzerinde açıklayayım :

CONNECT BY  ID = PRIOR PARENT ile ID ve PARENT sütunlarının ilişkili olduğunu belirttik , PRIOR ifadesi PARENT tarafında yazdığımız için sorgumuzun yönü ID den PARENT Tarafına doğru ilerledi , START WITH ID = 11; ile de ID si 11 olan kayıttan başlayarak son kayda kadar ilerlemesini sağladı.

Kaynak ve daha detaylı bilgi ve farklı kullanımları incelemek için : https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm

İyi Çalışmalar…

Print Friendly, PDF & Email
Bu alana reklam verebilirsiniz!