SQL Server’da Recursive Menü Oluşturmak

SQL Server'da Recursive Menü Oluşturmak
SQL Server'da Recursive Menü Oluşturmak

Herkese merhaba. Bu yazıda SQL Server’da Recursive Menü oluşturmak ile ilgili bilgi vermeye çalışacağım.

SQL Server’da menü basit ya da gelişmiş şekilde iç içe menüler oluşturabilirsiniz.

Öncelikle, “Menu” adında bir tablo oluşturalım.

CREATE TABLE Menu (
	MenuID INT PRIMARY KEY
   ,MenuName NVARCHAR(50)
   ,ParentMenuID INT NULL
   ,FOREIGN KEY (ParentMenuID) REFERENCES Menu (MenuID)
);

Daha sonra, tabloya en az 10 adet menü ve alt menü içeriği ekleyelim.

INSERT INTO Menu (MenuID, MenuName, ParentMenuID)
	VALUES (1, 'Ana Menü 1', NULL),
	(2, 'Ana Menü 2', NULL),
	(3, 'Alt Menü 1.1', 1),
	(4, 'Alt Menü 1.2', 1),
	(5, 'Alt Menü 1.3', 1),
	(6, 'Alt Menü 2.1', 2),
	(7, 'Alt Menü 2.2', 2),
	(8, 'Alt Menü 2.3', 2),
	(9, 'Alt Menü 2.4', 2),
	(10, 'Alt Menü 2.5', 2);

Bu örnekte, “MenuID” sütunu benzersiz bir menü kimliği olarak kullanılmıştır. “MenuName” sütunu, menü adını içerir. “ParentMenuID” sütunu ise bir alt menüyü ana menüye bağlamak için kullanılır. Alt menülerin “ParentMenuID” değeri, ilgili ana menünün “MenuID” değerine eşit olmalıdır. Ana menülerin “ParentMenuID” değeri NULL olarak ayarlanır.

SQL Server’da bir tabloda ana menülerin alt menülerle ilişkilendirilmesi için özyinelemeli bir sorgu kullanabiliriz.

Aşağıdaki örnek, ana menü ve alt menülerin ilişkilendirildiği bir tabloyu hiyerarşik olarak göstermektedir.

WITH RecursiveMenu
AS
(SELECT
		MenuID
	   ,MenuName
	   ,ParentMenuID
	   ,MenuLevel = 0
	   ,MenuPath = CAST(MenuName AS NVARCHAR(MAX))
	FROM Menu
	WHERE ParentMenuID IS NULL

	UNION ALL

	SELECT
		m.MenuID
	   ,m.MenuName
	   ,m.ParentMenuID
	   ,MenuLevel = rm.MenuLevel + 1
	   ,MenuPath = CAST(rm.MenuPath + ' > ' + m.MenuName AS NVARCHAR(MAX))
	FROM Menu AS m
	INNER JOIN RecursiveMenu AS rm
		ON m.ParentMenuID = rm.MenuID)
SELECT
	MenuID
   ,MenuName
   ,MenuLevel
   ,MenuPath
FROM RecursiveMenu
ORDER BY MenuPath;

Yukarıdaki sorguyu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da Recursive Menü Oluşturmak

Görüldüğü üzere basit şekilde Recursive menü oluşturmuş olduk.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

171 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!