واکشی داده ها با join (داده های سلسله مراتبی)

این تاپیک 0 پاسخ و 1 مشارکت کننده دارد . آخرین آپدیت توسط :  majid1605 ،‏ 2 سال و 3 ماه پیش .

این تاپیک تاکنون 575 بازدید داشته است .

تگ شده :  

نویسنده پست
چهار شنبه ، 27 آگوست 2014     10:31 ب.ظ #


majid1605

Subscriber
0 پست1 تاپیک

جدول یک cms پرسش و پاسخ رو بررسی میکردم به موضوع جالبی برخوردم به اسم داده های سلسله مراتبی
فرض کنید داده ها درون جدول به صورت زیر ذخیره شده باشند

+------+----------+-------+
|  id  | parentid | type  |
+------+----------+-------+
|  1   |     0    |   Q   |
+------+----------+-------+
|  2   |     1    |   A   |
+------+----------+-------+
|  3   |     0    |   Q   |
+------+----------+-------+
|  4   |     2    |   C   |
+------+----------+-------+
|  5   |     2    |   C   |
+------+----------+-------+
|  6   |     1    |   A   |
+------+----------+-------+
|  7   |     3    |   C   |
+------+----------+-------+
|  8   |     1    |   C   |
+------+----------+-------+
|  9   |     0    |   Q   |
+------+----------+-------+
|  10  |     9    |   C   |
+------+----------+-------+
|  11  |     9    |   A   |
+------+----------+-------+
|  12  |    11    |   C   |
+------+----------+-------+

a جواب q سوال , c کامنتهای پرسش یا پاسخ هستند وقتی id=1 واکشی میشه قطعا تمام پاسخ ها و کامنتهای مربوط به این پاسخ ها و پرسش نیز واکشی میشن .

برای مثال اگه بخوایم پرسش یک و تمام پاسخ ها و کامنتهای وابسته (مرتبط) رو واکشی کنیم :

+------+----------+-------+
|  id  | parentid | type  |
+------+----------+-------+
|  1   |     0    |   Q   |
+------+----------+-------+
|  8   |     1    |   C   |
+------+----------+-------+
|  2   |     1    |   A   |
+------+----------+-------+
|  4   |     2    |   C   |
+------+----------+-------+
|  5   |     2    |   C   |
+------+----------+-------+
|  6   |     1    |   A   |
+------+----------+-------+

به چنین خروجی چطور می تونیم دست پیدا کنیم؟چندجا سوالا پرسیدم فقط به واکشی با join اشاره کردن ولی هنوز نتونستم کئری صحیحی براش بنویسم
یه سوال دیگه هم دارم اینکه چهار روش کلی برای واکشی همچین داده های پیشنهاد شده بود
Adjacency list
Nested sets
Path enumeration
Closure table

کدوم راه بهتره ؟
هرچند جدول بالا ظاهرا بر اساس راه اول طراحی شده

0  تشکر
پست 1 تا 1 (از مجموع 1 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .