PDA

View Full Version : گرفتن تعداد وابسته



PrinceDotNet
دوشنبه 13 فروردین 1386, 14:32 عصر
سلام
من یک جدول دارم که گروه ها و زیر گروه ها رو در اون قرار می دم و یک فیلد به نام ParentID دارم که وقتی 0 هستش به عنوان گروه و وقتی عدد دیگه ای هست به گروه اصلی اشاره داره و یعنی زیر گروه اون هستش.
و یک جدول دیگه دارم که لینک ها در اون قرار می گیره و یک فیلد به نام GroupID داره که به زیر گروهی که در اون قرار داره اشاره داره.

حالا می خوام وقتی یک گروه یا زیر گروه انتخاب میشه تعداد لینک هایی که در اون شاخه قرار داره در یک ستون ثبت بشه و هنگام درخواست فرستاده بشه.

مثلا:
گروه عمران .... زیر گروه زلزله ..... 8 لینک
گروه عمران .... زیر گروه محیط زیست ..... 5 لینک

حالا وقتی گروه عمران درخواست میشه می خوام یک ستون که دارای مقدار 13 هستش باهاش فرستاده بشه.
و وقتی عمران - زلزله انتخاب شد ستونی دارای مقدار 8 باهاش فرستاده بشه.

ممنون.

AminSobati
دوشنبه 13 فروردین 1386, 23:58 عصر
دوست عزیزم،
اگر هر آیتم، فقط یک Parent میتونه داشته باشه، اصطلاحا شما Tree (درخت) دارین، و اگر بیش از یک Parent میتونه داشته باشه، Network دارین. در حالت درختی، پیمایش از بالا به پائین و بلعکس کار سختی نیست. شما به یک Recursive Query نیاز دارین. در SQL Server 2000 این کار باید با یک حلقه (مثل While) انجام بشه به این شکل که وقتی Childهای یک آیتم رو بدست آوردین، اون رو در جدول موقتی نگه دارین و ازش استفاده کنین تا Childهای رده بعدی رو واکشی کنین. در SQL Server 2005 این کار با همون مکانیزم، اما به شکل راحت تری (از نظر برنامه نویسی) انجام میشه به کمک CTE. اگر Script دو جدولی که ازشون صحبت کردین رو پست کنین بهتر میشه راهنمایی کرد

PrinceDotNet
سه شنبه 14 فروردین 1386, 00:37 صبح
سلام
من بانکمو تغییر دادم و به شکل زیر در آوردم.
ببینید من یک جدول گروه دارم و یک جدول زیر گروه که در یک فیلد این جدول ID گروه که در جدول دیگه هست رو گذاشتم.
حالا می خوام که وقتی یک گروه درخواست میشه با اون تعداد زیر گروهاش که در جدول دیگه هست فرستاده بشه.

ممنون میشم راهنماییم کنید.من یک کم از پاسخ بالا گیج شدم.
ممنون.

AminSobati
سه شنبه 14 فروردین 1386, 15:30 عصر
SELECT SUM(Link) FROM ZirGorooh WHERE GroupID=someID
ولی چون Script رو پست نکردین نمیدونم ساختار شما رو درست تونستم حدس بزنم یا نه!!