ورود

View Full Version : دسترسی سلسله مراتبی



hahaie
یک شنبه 16 خرداد 1395, 21:42 عصر
دوستان سلام.
فرض کنید یه جدول داریم که اطلاعات کارمندان داخلش هست.توی هر سازمانی هم یه سلسله مراتبی هست.حالا پروسیجری میخوام داشته باشم که وقتی مثلا اسم یه کارمند رو میگیره فقط اسم کارمندای زیر مجموعه خودش رو برگردونه.
عکس زیر رو ببینید:
140714
به عنوان مثال اگر ورودی "آقای X" بود تمامی موارد فوق برگردونده بشه یا
اگه ورودی "آقای X2" بود فقط X21و X22 برگردونده بشه یا
اگر ورودی X4 بود خروجی ای نداشته باشه.
ممنون میشم کمک کنین هم توی طراحی جدول هم توی نوشتن این پروسیجر

ASKaffash
دوشنبه 17 خرداد 1395, 06:36 صبح
سلام
متناسب با ساختار جدول طراحی شده برای Tree تان از CTE استفاده کنید

hahaie
دوشنبه 17 خرداد 1395, 07:24 صبح
چقدر خلاصه!
میشه یه مثالی چیزی

pezhvakco
دوشنبه 17 خرداد 1395, 10:44 صبح
چقدر خلاصه!
میشه یه مثالی چیزی
توضیح بیشتر و مثال در همین سایت است.

ASKaffash
سه شنبه 18 خرداد 1395, 06:28 صبح
سلام
این یک مثال ساده از CTE برای یک Tree :

With MyCTE(mPK,mFK) As
(
Select PK,FK
From MyTree
Where FK=0
Union All
Select PK=PK,FK=FK
From MyTree
Where FK=mPK
)
Select *
From MyCTE

pashna
پنج شنبه 20 خرداد 1395, 21:17 عصر
http://blog.sqlauthority.com/2008/07/28/sql-server-simple-example-of-recursive-cte/

asma_shadravan_70
سه شنبه 25 خرداد 1395, 10:24 صبح
عکس جدول و کوئری که باید استفاده کنی رو میزارم

140853140852

hahaie
دوشنبه 07 تیر 1395, 13:11 عصر
ممنون از پاسخگویی دوستان.
ولی این نکته هست که به فرض همون ساختاری که توی پست اول گذاشتم و اینکه اگه یه پروسیجری بنویسیم که ورودیش نام(یا آی دی) یک شخص باشه و خروجیش مشخصات افراد زیر نظر اون فرد؛اون پروسیجر چه کدی خواهد داشت؟(چقدر سخت حرف زدم!)
مثلا آقای X بتونه مشخصات همه افراد رو ببینه ولی آقای X2 فقط مشخصات آقای X21 و X22 رو بتونه ببینه.
خودم یه فیلد جدید توی جدول تعریف کردم و براساس سلسله مراتب هر فرد یه مقداری برا هر فرد مشخص کردم که با استفاده از like میشه اینکار رو کرد ولی خودتون بهتر میدونید Like خیلی سرعت رو پایین میاره

hahaie
دوشنبه 07 تیر 1395, 13:40 عصر
این کوئری 158 رکورد خروجی داره بنظر درست کار نمیکنه
ببخشید مربوط به پست 4 هست

hahaie
دوشنبه 07 تیر 1395, 13:45 عصر
عکس جدول و کوئری که باید استفاده کنی رو میزارم

140853140852
این فیلد HierLevel چیه و از کجا اومده؟؟ :متعجب: