PDA

View Full Version : درخواست توضیحات کامل در مورد نوع HierarchyId در SQL Server - کتاب، وب سایت، انگلیسی، فارسی ؟



منصور بزرگمهر
سه شنبه 21 دی 1395, 15:41 عصر
درخواست توضیحات کامل در مورد نوع HierarchyId در SQL Server می باشم. کتاب، وب سایت، انگلیسی، فارسی باشد فرقی نمی کند. فقط توضیحات کامل دهد.

مثال msdn را خواندم، ولی وقتی به کد

WITH paths(path, EmployeeID)
AS (
-- This section provides the value for the root of the hierarchy
SELECT hierarchyid::GetRoot() AS OrgNode, EmployeeID
FROM #Children AS C
WHERE ManagerID IS NULL

UNION ALL
-- This section provides values for all nodes except the root
SELECT
CAST(p.path.ToString() + CAST(C.Num AS varchar(30)) + '/' AS hierarchyid),
C.EmployeeID
FROM #Children AS C
JOIN paths AS p
ON C.ManagerID = P.EmployeeID
)
INSERT NewOrg (OrgNode, O.EmployeeID, O.LoginID, O.ManagerID)
SELECT P.path, O.EmployeeID, O.LoginID, O.ManagerID
FROM EmployeeDemo AS O
JOIN Paths AS P
ON O.EmployeeID = P.EmployeeID
GO


رسیدم معنای WITH paths(path, EmployeeID)
AS ( را نفهمیدم. اصلاً WITH paths یعنی چه. آیا tutorial دیگری غیر از msdn در مورد این نوع داده وجود دارد.

لطفاً کمک کنید. نیاز به این نوع داده دارم.


متشکرم - بزرگمهر

حمیدرضاصادقیان
دوشنبه 18 بهمن 1395, 18:55 عصر
سلام
کاملترین منبع همون MSDN هست
اون With که نوشته شده د رواقع CTE یا Common Table Expression هست . شما باید دستورات رو دقیق بدونید.
الان شما در مسائل پایه ای مقداری ضعف دارید که پیشنهاد می کنم حتما کتاب T-SQL Fundamental نوشته Itzik Ben-gan رو مطالعه کنید
در این کتاب در مورد این تایپ نیز توضیح داده شده و مثالهایی رو حل کرده.
دلیل استفاده از CTE هم در این کد به خاطر ساختار درختی بودن هست که حالت بازگشتی یا Recursive رو داخل این کد نوشته که بهش Recursive CTE گفته میشه.