ورود

View Full Version : ایجاد رابطه چند به چند بدون استفاده از join



mohinsoft
شنبه 05 آبان 1386, 11:11 صبح
با سلام
میخواستم بدونم چطور میشه با کدنویسی بدون استفاده از دستور join از رابطه های چند به چند واکشی اطلاعات کرد؟
فرض کنیم ساختار درختی زیر وجود دارد:
1-کامپیوتر-->3-برنامه نویسی-->7-پاسکال-->11-فصل اول
------------->4-گرافیک-- >8-فتوشاپ ---> 12-فصل دوم
-------------> 9-کارل
2-مقالات-->5-علمی-->10-فیزیک
------------>6-فرهنگی

که همه اینها در یک جدول ذخیره شده اند و این جدول پنج فیلد uid,nameR,idparent,isRoot,isEnd دارد که isRoot نشاندهنده ی ریشه بودن رکورد است مثلا کامپیوتر isRoot آن 1 است و isEnd نشاندهنده ی انتهای ریشه است مثلا 11-فصل اول isEnd آن 1 است، و idparent نشان دهنده ی uid فیلد پدر هست مثلا برنامه نویسی idparent آن 1 هست چون پدرش کامپیوتر است،حالا میخواهیم با داشتن uid ریشه بتونیم به انتهای ریشه یعنی آنهایی که IsEnd آن 1 است و مربوط به آن ریشه است را واکشی کنیم

MohammadSoft
شنبه 05 آبان 1386, 15:02 عصر
سلام
شما باید از توابع بازگشتی در SQL Server استفاده کنید .
البته من ساختار جدولتان را نمی پسندم .
دلیل خاصی برای استفاده از این 4 فیلد داری ؟
این فیلدها چگونه پر می شوند .
قاعدتا باید بصورت دینامیک پر شود که این کار سختی است و بسیار راحت تر می توان آنرا انجام داد .

AminSobati
شنبه 05 آبان 1386, 23:47 عصر
دوست عزیزم،
نکته اول اینکه شما به فیلد isroot نیاز ندارید چون اگر فیلد idparent دارای Null باشه پس این رکورد ریشه خواهد بود.
نکته دوم، چرا از Join نباید استفاده کرد در حالیکه دارین برای SQL Server برنامه نویسی میکنین؟ به هر حال... شما با داشتن یک uid، میتونین جستجو کنین برای رکوردی که idparent اون برابر با uid مذکور باشه. بعد از این، مجددا Query رو تکرار میکنین تا فرزند بعدی رو بدست بیارین و الی آخر